ajax json_encode为泰语,阿拉伯语和中文字符返回null

时间:2015-09-22 12:12:00

标签: php json ajax codeigniter multilingual

我正在使用多语言(亚洲语言)网站,并面临着奇怪的问题。我有一个函数,返回包裹在json_encode中的字符串。

我正在使用 codeigniter ,我已经设置了

  

$ db ['default'] ['char_set'] ='utf8';

     

$ db ['default'] ['dbcollat​​'] ='utf8_general_ci';

如果我直接打印输出,那么它会正确显示中文,阿拉伯语,泰语字符串,这意味着我已正确编码我的网页和php以打印多语言字符串,但如果我通过以下方式获取该字符串ajax并使用json_encode打印'??????'

到目前为止,我试过

  1. 将“JSON_UNESCAPED_UNICODE”添加到json_encode函数。 (服务器为此抛出错误,php5不支持这个我猜)
  2. 在json_encode函数之前添加UTF标头
  3. 还尝试在ajax请求中设置UTF标头
  4. 甚至尝试添加
  5.   

    mb_convert_encoding($ reviewsui,'ISO-8859-1','UTF-8');

    但到目前为止没有任何工作。我错过了什么吗?

    修改 我甚至尝试通过 utf8_encode()传递该字符串,甚至没有解决我的问题。我看到的唯一区别是“????”我看到“समाà¤à¤ªà¤°”。

1 个答案:

答案 0 :(得分:0)

json_encode要求数据中的字符串编码为UTF-8.

如果它们尚未转换为UTF-8,请将它们转换为下面的示例

  $results = array_map(function($r) {
      $r['text'] = utf8_encode($r['text']);
      return $r;
    }, $results);
    echo json_encode($results);