【问题标题】:PHP array to javascript array UTF-8PHP数组到javascript数组UTF-8
【发布时间】:2015-10-06 12:23:30
【问题描述】:

我尝试将 php 数组移动到 javascript 数组。 这就是我所做的:

$cities = "בני ברק, גבעתיים, חוות שלם, רמת גן";

$php_array = explode(',', $cities);

$js_array = json_encode($php_array,JSON_HEX_APOS|JSON_HEX_QUOT);

echo "<script type='text/javascript'> var cities = ". $js_array . ";</script>";

由于某种原因,当我打开 google chrome 调试器并检查城市是什么时,我得到了以下信息:

<script type='text/javascript'> var cities = ["&#1488;&#1494;&#1506;&#1511;&#1492; &#1489;&#1489;&#1504;&#1497; &#1489;&#1512;&#1511;"," &#1490;&#1489;&#1506;&#1514;&#1497;&#1497;&#1501;"," &#1495;&#1493;&#1493;&#1514; &#1513;&#1500;&#1501;"," &#1512;&#1502;&#1514; &#1490;&#1503;"];</script>

我不知道它为什么要解码。我有 php 5.6。

后来我尝试只移动一个普通变量,即使我移动了一个普通变量(没有 json_encode),它也会变成这样

我使用了这些例子:

Convert php array to Javascript

Passing utf-8 strings between php and javascript

谢谢!

【问题讨论】:

  • 这就是json_encode处理unicode字符的方式...

标签: javascript php html arrays encode


【解决方案1】:

首先,使用UTF-8 with BOM 编码保存您的文件。然后,将JSON_UNESCAPED_UNICODE 选项添加到您的json_encode 调用中。

$js_array = json_encode($php_array, JSON_HEX_APOS|JSON_HEX_QUOT|JSON_UNESCAPED_UNICODE);

【讨论】:

  • 由于某种原因,我得到了相同的结果.. 文件以 UTF-8 和 BOM 保存
  • @MorHaviv 哦,它对我有用......嗯,我会继续寻找。
  • @MorHaviv 不,这不应该改变任何事情。以防万一,尝试将 just this code 粘贴到新的 UTF-8 with BOM 编码的 php 文档中。然后,访问它并查看源代码(不要使用调试器,它有时会修改接收到的代码)。你还有这个问题吗?
  • 它正在工作,但现在我找到了导致问题的原因。基本上 $cities var 是通过邮寄方式收到的。我只是放了一个可以接收数据的例子。 $cities=_$POST['cities']; 当我执行 echo $cities 时,它看起来很正常,但是当它进入 json_encode 时,它​​会被解码
  • 我将您的答案标记为正确,因为它对于我提出的问题是正确的。我应该问另一个问题,因为问题出在我使用的 post 方法上。无论如何,多亏了你,我找到了真正的问题并解决了它!谢谢!
猜你喜欢
  • 2017-03-20
  • 1970-01-01
  • 2012-03-04
  • 2018-04-01
  • 2011-01-09
  • 2014-03-30
  • 1970-01-01
  • 1970-01-01
  • 2018-06-18
相关资源
最近更新 更多