所有
我使用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响应中收到的内容?
答案 0 :(得分:7)
我从服务器获得的JSON响应中包含特殊字符。因此,我使用以下语句将其转换为UTF8,解码JSON并将其用作数组以显示给UI。
JSON数据已经以UTF-8编码。你不应该再把它转换成UTF-8;你会破坏数据。
而不是:
$response = json_decode(utf8_encode($jsonresponse));
你应该有这个:
$response = json_decode($jsonresponse); //already UTF-8!
答案 1 :(得分:3)
将此设置为您的php连接:
$sql = “SET NAMES ‘utf8′”;
mysql_query($sql, $link);
答案 2 :(得分:2)
您是否尝试过切换功能的位置?
$jsonrequest = utf8_encode(json_encode($request));
utf8_encode只对字符串进行编码而不是数组
答案 3 :(得分:1)
您将初始请求转换为UTF-8,因此我认为它是其他的。但是当您重新发送数据时,不会将其转换回原始编码。
您确定以服务器期望的编码发送数据吗?
答案 4 :(得分:0)
我也在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” >