4

我正在将网站数据库转换为 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

3 回答 3

10

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

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

输出将是:

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

(从这里

于 2014-06-09T17:51:42.780 回答
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)

于 2011-11-26T02:11:21.027 回答
0

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

echo json_encode(Array,JSON_UNESCAPED_UNICODE);

于 2021-04-24T01:57:50.943 回答