当我将数组编码为JSON时,我得到“u00e1”而不是á。
我该如何解决字符编码?
由于
答案 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”