每当提交时,Bitbucket对个人页面的POST查询都有问题:加重的字符被数字替换。
以下是我用于提交的消息:Démo test éà
以下是我的网页获取的内容:Du00e9mo test u00e9u00e0
uft8_decode
,utf8_encode
,iconv
(使用UTF-8和
ISO-8859-1)和其他(基于我发现的帖子)header('Content-Type: text/html; charset=UTF-8');
答案 0 :(得分:1)
如果从JSON编码的字符串中删除了反斜杠\,则会发生这种情况。 UTF编码是正确的(è正确00e9)。
如果您在代码中使用stripslashes
,请在 json_decode
后使用映射函数,不要或使用它(但不一定必要)。
这就是流氓stripslashes
会做的事情:
<?php print json_decode(stripslashes(json_encode("Démo test éà"))) . "\n"; ?>
Du00e9mo test u00e9u00e0
如果您无法控制界面,可以尝试反向运行该过程以获取正确的字符串。这有点像一个可怕的黑客,并不是非常强大,所以我只把它用作非常的最后手段:
<?php
$string = "Du00e9mo test u00e9u00e0";
$correct = preg_replace("/u([0-9a-f][0-9a-f][0-9a-f][0-9a-f])/", '\\u\\1', json_encode($string));
$string = json_decode($correct);
print "Output: $string\n";
?>
Output: Démo test éà