json字符编码问题

时间:2010-03-12 18:30:40

标签: json character-encoding

当我将数组编码为JSON时,我得到“u00e1”而不是á。

我该如何解决字符编码?

由于

3 个答案:

答案 0 :(得分:4)

您的输入数据不是Unicode。对于á,0xE1是传统的latin1 / ISO-8859 - * / Windows-1252。 \ u00e1是要对其进行编码的JSON / JavaScript。 JSON 必须使用Unicode编码。

通过修复输入或使用iconv等方式进行转换来解决问题。

答案 1 :(得分:1)

浏览器的默认编码可能是Unicode UTF-8。尝试 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

答案 2 :(得分:0)

如果只检查响应,则可能有一个问题(响应只是一个文本,但JSON必须是一个对象)。

您必须首先将响应文本解析为javascript对象(javascript中为JSON.parse),之后字符将与服务器端的字符相同。

实施例: 在php代码的服务器上:

$myString = "árvízrtűrő tükörfúrógép";
echo json_encode($myString); //this sends the encoded string via a protocol that maybe    can handle only ascii characters, so the result on the client side is:

在客户端

alert(response); //check the text sent by the php

输出:“\ u00e1rv \ u00edzrt \ u0171r \ u0151 t \ u00fck \ u00f6rf \ u00far \ u00f3g \ u00e9p”

从respopnse

创建一个js对象
parsedResponse = JSON.parse(response);
alert(parsedResponse);

输出:“árvízrtűrőtükörfúrógép”