PHP json_encode()函数和波斯语

时间:2011-11-26 02:05:16

标签: json persian

我正在将网站数据库转换为Joomla的K2组件数据库。 在K2中有一个extra_fields列,用户可以创建自定义字段,类似于Drupal的CCK。所以我使用此功能将项目的源保存在字段中。 {"id":"7", "value":"Text"} 但当我使用json_encode“ارتباطاتواطلاعرساني”或其他任何东西而不是

{"id":7,"value":"\u0627\u0631\u062a\u0628\u0627\u0637\u0627\u062a \u0648 \u0627\u0637\u0644\u0627\u0639 \u0631\u0633\u0627\u0646\u064a"}

我在本地主机中看到,我有:

{"id":"7","value":"u0631u0648u0627u0628u0637 u0639u0645u0648u0645u064a"},将数据插入数据库

更新:

  • 我正在尝试json_encode没有斜线

  • 我已经编写了一个PHP代码,用于从表中读取然后转换数据并将其插入另一个表中

  • 我用来从我的源创建json_encoded数据的脚本是:

    if($this->source[$i]){
            $this->source[$i] = trim($this->source[$i]);
            $this->extrafield[$i] = array("id"=>"7", "value"=>$this->source[$i]);
            $this->extrafield[$i] = json_encode($this->extrafield[$i]);
    }
    

更新2:

我想我解决了自己的问题。检查答案。

4 个答案:

答案 0 :(得分:8)

由于 5.4.0 ,您可以使用未转义的unicode作为JSON,方法是将常量JSON_UNESCAPED_UNICODE作为第二个参数传递(当然这是可选的):

<?php var_dump(json_encode(array('text' => 'ارتباطات و اطلاع رسانی'), JSON_UNESCAPED_UNICODE)); ?>

输出将是:

string(52) "{"text":"ارتباطات و اطلاع رسانی"}"

(来自here

答案 1 :(得分:1)

我认为您应该尝试隔离问题的实际位置。你把它存放在一个文件中吗?数据库?是否可以通过一些转义(或取消转义)代码删除斜杠?

使用PHP 5.3.4,此代码:

<?php var_dump(json_encode(array('text' => 'رتباطات و اطلاع رساني')));

正确输出:

string '{"text":"\u0631\u062a\u0628\u0627\u0637\u0627\u062a \u0648 \u0627\u0637\u0644\u0627\u0639 \u0631\u0633\u0627\u0646\u064a"}' (length=122)

答案 2 :(得分:0)

为了解决这个问题使用下面的代码

echo json_encode(Array,JSON_UNESCAPED_UNICODE);

答案 3 :(得分:-2)

我猜问题是从数据插入到mysql时,所以我使用了mysql_real_escape_string()函数,问题似乎已经解决了。