PHP:如何回应hindi语言的json编码

时间:2015-05-12 09:33:09

标签: php json hindi

我正在使用翻译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"}

4 个答案:

答案 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);