0

每当进行提交时,Bitbucket 对个人页面进行的 POST 查询存在问题:重音字符被数字替换。

这是我用于提交的消息:Démo test éà

这是我的页面得到的:Du00e9mo test u00e9u00e0

  • 我尝试使用uft8_decode, utf8_encode, iconv(使用 UTF-8 和 ISO-8859-1)和其他(基于我发现的帖子)
  • 我用 UTF-8 保存了我的脚本
  • 我尝试使用header('Content-Type: text/html; charset=UTF-8');
4

1 回答 1

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 éà
于 2013-03-10T19:56:21.203 回答