PHP-带有特殊字符的utf8_decode小写

时间:2018-07-09 18:50:18

标签: php encoding utf-8

我在使用PHP编码时遇到问题。我尝试使用函数utf8_decode在UTF-8中解码字符串。

不幸的是,当特殊字符小写时,utf8_decode失败。

示例:

utf8_decode("moi-même"); // moi-même => it works fine.

但是:

utf8_decode("moi-mãªme"); // failed : "moi-m�me"

我需要解码大量文本。那么,如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

如果您查看UTF-8 table,将会看到

  

C3 AA =>ê

现在,如果您看着ISO-8859-1 table,您将会得到

  

C3 =>Ã

     

AA =>ª

这就是为什么ê(iso)=>ê(utf8)

现在,如果您查看ISO表

  

E3 =>ã

     

AA =>ª

并且UTF-8表中没有等效的E3 AA,这意味着ãª无效。

答案 1 :(得分:0)

我认为您只是感到困惑。 PHP做得很好,您可以通过以下方式检查已解码字符的实际值:

php > echo ord(utf8_decode("moi-mãªme")[5]);
227

,如果您查看iso-8859-1编码(here)的符号表,您会看到227(E3)是ã。出现“ moi-mme”的原因是您的终端字符编码可能设置为utf-8。而且在UTF-8中任何大于0x80的数字都意味着它是多字节字符,因此在这种情况下将为e3aa

要查看正确的输出,请将终端字符编码更改为iso-8859-1。