繁体   English   中英

Json_encode,json_decode和UTF8

[英]Json_encode, json_decode and UTF8

所有,

我使用PHP向Web服务器发出JSON请求,它在变量中返回一个JSON响应。 JSON响应将包含许多键和值。 我从服务器获得的JSON响应中包含特殊字符。 因此,我使用以下语句将其转换为UTF8,解码JSON并将其用作数组以显示到UI。

$response = json_decode(utf8_encode($jsonresponse));

现在,我必须在JSON请求中将相同的值传递给服务器以执行某些操作。 但是,当我通过

$jsonrequest = json_encode(utf8_encode($request));

到服务器,它失败了。

以下代码成功读取特殊字符并将其显示到UI。 但如果我必须将utf8_encode值传递给服务器,则会失败。

当前的整个往返代码如下:

$requestdata  = json_encode($request);
$jsonresponse = //Do something to get from server;
$response = json_decode(utf8_encode($jsonresponse));

我怎样才能修改它,以便传递确切的值来表示我从服务器的json响应中收到的内容?

我从服务器获得的JSON响应中包含特殊字符。 因此,我使用以下语句将其转换为UTF8,解码JSON并将其用作数组以显示到UI。

JSON数据已经以UTF-8编码。 你不应该再把它转换成UTF-8; 你会破坏数据。

而不是这个:

$response = json_decode(utf8_encode($jsonresponse));

你应该这样:

$response = json_decode($jsonresponse); //already UTF-8!

将此设置为您的PHP连接:

$sql = “SET NAMES ‘utf8′”;
mysql_query($sql, $link);

你试过切换功能的地方吗?

$jsonrequest = utf8_encode(json_encode($request));

utf8_encode只编码字符串而不是数组

您将初始请求转换为UTF-8,因此我认为它是其他的。 但是当您重新发送数据时,不会将其转换回原始编码。

您确定以服务器期望的编码发送数据吗?

我也在AJAX调用中使用ZF和utf-8编码的字符串,我认为uft8_encode和utf8_decode函数应该是过时的。

你有一个有效的元标记吗?

<meta http-equiv =“Content-Type”content =“text / html; charset = UTF-8”/>

和有效的doctype

<!DOCTYPE HTML PUBLIC“ - // W3C // DTD HTML 4.01 // EN”“ http://www.w3.org/TR/html4/strict.dtd ”>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM