2013-10-03 76 views
0

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

<?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" 

我还是无法输出润色人物。我不知道什么是错的?请帮助:)

+1

你从哪里看到这个输出?将JSON数据直接回传到HTML页面并期望它以有意义的方式渲染是没有意义的。它可能是那里的JavaScript脚本的一部分,但你也必须以某种方式处理它。 – Bruno

+1

你在你的php中有一个错字。 – Daedalus

+0

为什么在输出JSON时将标题设置为text/html?如果你没有JSON编码字符串(或者甚至编码它然后解码它),那么将显示波兰语字符。或者,如果您希望将数据输出为JSON,则UTF-8编码(\ u0105)将被保留,并且可以通过读取它的任何代码进行翻译。 –

回答

0

尝试这样做:

echo json_decode(json_encode($data)); 

你应该看到的是,波兰的字符显示就好了。

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

+0

Omg什么是embaressment :)你们都有权利没有问题开始。我自己创造了它。我只需要一个方法来传递多维数组从PHP到JavaScript,我看到这种方法与JSON。当我从couriosity编码它时,我回应PHP编码的数组,因为我很高兴。当我看到没有波兰语的人物时,它就开始了。我基本上浪费了几个小时试图把波兰语字符放回到编码数组中:)而且我非常盲目,我没有尝试从javascript输出解码后的数组。感谢您帮助我如此迅速 – Bogdan