php utf8_decode无法识别$ _GET中的平方根

时间:2012-10-07 14:54:02

标签: php mysql utf-8 utf8-decode

当我发送这个完美的方形角色时:

25²

使用utf8_decode在另一个页面中检索它(如预期的那样):

25²

现在我想用平方根做同样的事情。当我发送这个平方根时:

√225

使用utf8_decode检索(_ $ GET),如我所知:

?255

注意:我更喜欢一种方法,当我检索到这个值时会解决这个问题(比如â225)而不是一个会迫使我改变它的初始表示的方法。

编辑:我以为我使用的是mysql,但我不是。对不起误导。这是我用来检索值的脚本:

if (isset($_GET['json'])){  
  $json = urldecode($_GET['json']);
  $roots = json_decode($json, true);
  $arrList = utf8_decode(implode(",,,", $roots['nameList']));
  print_r($arrList)
}

2 个答案:

答案 0 :(得分:1)

utf8_decode函数将字符串从UTF-8转换为latin1。 latin1中没有平方根符号,因此utf8_decode将其替换为问号。 ²不会发生这种情况,因为它确实存在于latin1中,位于0xB2位置。 (您可以查看latin1 in Wikipedia

页面中可用的字符

一种可能的解决方案是删除对utf8_decode的调用并将文本保留为UTF-8,但是您必须确保其余代码可以处理UTF-8。

答案 1 :(得分:0)

平方根字符不包含在ISO-8859-1中。因此不能转换,这会产生问号。如果你想使用这样的特殊字符,最好坚持使用UTF-8