【问题标题】:JSON + Polish charactersJSON + 波兰语字符
【发布时间】:2013-10-10 17:51:16
【问题描述】:

我正在使用 JSON 将数组从 PHP 发送到 Javascript。该数组正在从数据库中获取数据。我搜索了有关 JSON 和外来字符问题的多个主题,每个人都说要解决问题,您必须将编码设置为 utf-8。我认为我已经做到了,但这对我没有帮助。所以我运行测试看看有什么问题。为了简单起见,我尝试将带有波兰字符的字符串传递给 json_encode() 函数。所以我创建了 index.php 文件。在我的文本编辑器中,我选择在没有 BOM 的 UTF-8 中编码选项,然后我开始编码:

<?php
 header('Content-Type: text/html; charset=utf-8');
 $data = "polish characters: ążśęłóćźć";
 $jsonData = json_encode($data);
 echo mb_detect_encoding($data) . "<br />;
 echo $jsonData;
?> 

结果是:

UTF-8
"polish characters : \u0105\u017c\u015b\u0119\u0142\u00f3\u0107\u017a\u0107"

我仍然无法输出波兰语字符。我不知道出了什么问题?请帮忙:)

【问题讨论】:

  • 你在哪里看到这个输出?将 JSON 数据直接回显到 HTML 页面并期望它以有意义的方式呈现器实际上没有任何意义。它可能是 JavaScript 脚本的一部分,但您也必须以某种方式对其进行处理。
  • 您的 php 中有错字。
  • 为什么在输出 JSON 时将标头设置为 text/html?如果您不对字符串进行 JSON 编码(或者甚至对其进行编码然后对其进行解码),则将显示波兰字符。或者,如果您想将数据输出为 JSON,则 UTF-8 编码 (\u0105) 将被保留,并且可以通过正在读取它的任何代码进行翻译。

标签: php json encoding utf-8


【解决方案1】:

尝试做:

echo json_decode(json_encode($data));

您应该会看到波兰语字符显示得很好。

应用程序不应直接向最终用户显示 JSON,而应首先将其解析为更人性化的格式。如果您遵循该规则,json_encode 应该不会给您带来任何问题,因为您将始终将其解码并解析为任何合适的格式。

【讨论】:

  • 天哪,多么尴尬:)你们都说得对,一开始就没有问题。我自己创造了它。我只需要一种将多维数组从 php 传递到 javascript 的方法,并且我看到了这个带有 JSON 的方法。当我从好奇心对其进行编码时,我从 PHP 中回显了编码数组,因为我很感兴趣。当我看到没有波兰语字符时,一切就开始了。我基本上浪费了几个小时试图将波兰字符放回编码数组:) 我被蒙蔽了,以至于我没有尝试从 javascript 输出解码的数组。无论如何感谢你这么快地帮助我
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-09
相关资源
最近更新 更多