PHP:如何 json 编码印地语作为响应
PHP: How to json encode of hindi language in response
我正在处理翻译 API 但这是一个问题。我正在使用 JSON 作为回应,当我使用 json_encode 印地语时,输出就像是“\u092f\u0939 \u0915\u093e\u0930 \u0939\u0948”
我的代码如下
$data = array();
$data['hindi'] = 'यह कार है';
$data['english'] = 'This is car';
echo json_encode($data); die;
响应是
{"hindi":"\u092f\u0939 \u0915\u093e\u0930 \u0939\u0948","english":"This is car"}
原因很可能是这些字符不在 UTF-8 中(至少我找不到它们)。 From the PHP documentation on json_encode:
All string data must be UTF-8 encoded.
这意味着它必须将其转换为 'description' 个字符。别担心,如果你再次解码它很可能是正确的。
如果您是 运行 PHP 5.4 或更高版本,请在调用 json_encode
时传递 JSON_UNESCAPED_UNICODE
参数
示例:
$data = array();
$data['hindi'] = 'यह कार है';
$data['english'] = 'This is car';
echo json_encode($data, JSON_UNESCAPED_UNICODE);
die;
这是正确的json,当您在浏览器中显示它和/或解析它时,它会生成一个具有正确键和值的对象:
var json_string = '{"hindi":"\u092f\u0939 \u0915\u093e\u0930 \u0939\u0948","english":"This is car"}',
json = JSON.parse(json_string);
// or directly:
var json2 = {"hindi":"\u092f\u0939 \u0915\u093e\u0930 \u0939\u0948","english":"This is car"};
console.log(json_string);
console.log(json);
console.log(json2);
document.write(json_string);
document.write('<br>');
document.write(json.hindi);
document.write('<br>');
document.write(json2.hindi);
我有办法解决这个问题。它对我来说很好用。
$data = array();
$data['hindi'] = base64_encode('यह कार है');
$data['english'] = 'This is car';
$encoded_text=json_encode($data);
要检索数据的印地语部分:
$hindi=base64_decode(json_decode($encoded_text)->hindi);
我正在处理翻译 API 但这是一个问题。我正在使用 JSON 作为回应,当我使用 json_encode 印地语时,输出就像是“\u092f\u0939 \u0915\u093e\u0930 \u0939\u0948”
我的代码如下
$data = array();
$data['hindi'] = 'यह कार है';
$data['english'] = 'This is car';
echo json_encode($data); die;
响应是
{"hindi":"\u092f\u0939 \u0915\u093e\u0930 \u0939\u0948","english":"This is car"}
原因很可能是这些字符不在 UTF-8 中(至少我找不到它们)。 From the PHP documentation on json_encode:
All string data must be UTF-8 encoded.
这意味着它必须将其转换为 'description' 个字符。别担心,如果你再次解码它很可能是正确的。
如果您是 运行 PHP 5.4 或更高版本,请在调用 json_encode
JSON_UNESCAPED_UNICODE
参数
示例:
$data = array();
$data['hindi'] = 'यह कार है';
$data['english'] = 'This is car';
echo json_encode($data, JSON_UNESCAPED_UNICODE);
die;
这是正确的json,当您在浏览器中显示它和/或解析它时,它会生成一个具有正确键和值的对象:
var json_string = '{"hindi":"\u092f\u0939 \u0915\u093e\u0930 \u0939\u0948","english":"This is car"}',
json = JSON.parse(json_string);
// or directly:
var json2 = {"hindi":"\u092f\u0939 \u0915\u093e\u0930 \u0939\u0948","english":"This is car"};
console.log(json_string);
console.log(json);
console.log(json2);
document.write(json_string);
document.write('<br>');
document.write(json.hindi);
document.write('<br>');
document.write(json2.hindi);
我有办法解决这个问题。它对我来说很好用。
$data = array();
$data['hindi'] = base64_encode('यह कार है');
$data['english'] = 'This is car';
$encoded_text=json_encode($data);
要检索数据的印地语部分:
$hindi=base64_decode(json_decode($encoded_text)->hindi);