【问题标题】:PHP: How to json encode of hindi language in responsePHP:如何响应印地语的json编码
【发布时间】:2015-07-23 02:13:54
【问题描述】:

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

【问题讨论】:

    标签: php json hindi


    【解决方案1】:

    原因很可能是这些字符不在 UTF-8 中(至少我找不到它们)。 From the PHP documentation on json_encode:

    所有字符串数据必须是 UTF-8 编码。

    这意味着它必须将其转换为字符的“描述”。别担心,如果你再次解码它很可能是正确的。

    【讨论】:

      【解决方案2】:

      如果您运行的是 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,不转义字符可能会导致问题。如果他只在本地使用它,只需再次json_decodeing JSON 即可将原始文本返回给他。
      • 好的,但现在响应不是 JSON,而是只显示字符串
      【解决方案3】:

      这是正确的 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);

      【讨论】:

        【解决方案4】:

        我有办法解决这个问题。对我来说效果很好。

        $data = array();
        $data['hindi'] = base64_encode('यह कार है');
        $data['english'] = 'This is car';
        $encoded_text=json_encode($data);
        

        要检索数据的印地语部分:

        $hindi=base64_decode(json_decode($encoded_text)->hindi);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-09-18
          • 1970-01-01
          • 2014-03-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多