我正在使用翻译API,但这是一个问题。我正在使用JSON作为回应,当我做印地语的json_encode时,out就像“\ u092f \ u0939 \ u0915 \ u0901 \ u0930 \ u0939 \ 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"}
答案 0 :(得分:5)
如果您运行的是PHP 5.4或更高版本,请在调用JSON_UNESCAPED_UNICODE
时传递json_encode
参数
示例:
$data = array();
$data['hindi'] = 'यह कार है';
$data['english'] = 'This is car';
echo json_encode($data, JSON_UNESCAPED_UNICODE);
die;
答案 1 :(得分:5)
这是正确的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);
答案 2 :(得分:0)
原因可能是这些字符不是UTF-8(我至少找不到它们)。 From the PHP documentation on json_encode:
所有字符串数据必须采用UTF-8编码。
这意味着它必须将其转换为字符的“描述”。别担心,如果再次解码它很可能是正确的。
答案 3 :(得分:0)
我有解决这个问题的方法。它对我来说很好。
$data = array();
$data['hindi'] = base64_encode('यह कार है');
$data['english'] = 'This is car';
$encoded_text=json_encode($data);
要检索数据的印地文部分:
$hindi=base64_decode(json_decode($encoded_text)->hindi);