好吧,这很奇怪,我真的不知道是什么导致了我的问题:
工作流程:
- 我有一个带有 utf-8 列的常规 mysql 数据库。
- 我正在通过一个简单的输入字段将带有德语变音符号的文本插入到此列中。
- 我正在使用一个简单的查询来读取和显示行。
我的问题:
有时,也只是有时,会显示问号而不是变音符号。 奇怪的是,它只适用于某些单词,而不是所有的变音符号。 例如:“Gummibären”导致“ä”出现问号,但“Gumibären”(注意单个“m”)显示正确。所以,我在这里真的想不出一个模式。
- 该列在
utf8_general_ci
中 - HTML 文件使用
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- PHP 文件本身是用 utf-8 编码的
查询是:
mysqli_query("SET NAMES 'utf8'");
$var = "SELECT * FROM table ORDER BY id DESC";
同样奇怪的是,“ä”不是由 1 个问号而是 2 个问号代替,就好像有 2 个字符未编码,而不是只有 1 个。
有什么我想念的吗?
最佳答案
我想通了。它与在数据库中读取或写入 utf 没有任何关系,而是与 PHP 函数 wordwrap()
有任何关系。如果 wordwrap()
与多字节 unicode 字符(例如“ä”等)一起使用,它会弄乱字符串。
我在这个帮助下弄明白了:Multi-byte safe wordwrap() function for UTF-8还有这个:php wordwrap cut parameter when dealing with weird characters – 供将来引用。
感谢您的参与!
关于php - UTF-8 解码变音符号偶尔会失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24563230/