【发布时间】:2010-11-23 14:25:37
【问题描述】:
我正在修复一些错误的 UTF-8 编码。我目前正在使用 PHP 5 和 MySQL。
在我的数据库中,我有几个错误的编码实例,打印如下:î
- 数据库排序规则是 utf8_general_ci
- PHP 正在使用正确的 UTF-8 标头
- Notepad++ 设置为使用不带 BOM 的 UTF-8
- 数据库管理在phpMyAdmin中处理
- 并非所有重音字符都被破坏
我需要某种函数来帮助我将 î、ÃÂ、ü 和其他类似的实例映射到它们正确的重音 UTF-8 字符。
【问题讨论】:
-
也许你可以列出那些应该代表的字符?也许是十六进制转储?
-
快速浏览似乎表明您的字符串可能是“双”utf-8 编码的。 IE。以 utf-8 编码,将那些字节视为 unicode 字符,并将结果以 utf-8 编码。向后看:“î”="\xC3\x83\xC2\xAE"
-
它可能是双重编码的。有没有一种安全的方法来以编程方式检查这一点,如果有,安全解码双重编码的最佳方法是什么?
-
是的,Jayrox,请在下面查看我的答案。
-
afaik 的问题之一是
utf8_general_ci,它显然不能保证良好的 UTF8 stackoverflow.com/a/1036459/183677。你提到的那些字符 是 有效的 UTF8 hexutf8.com/… (但我意识到它可能正是你在控制台或其他地方看到的)。支付实际字节数