UTF-8解码变音符偶尔会失败

时间:2014-07-03 21:00:23

标签: php mysql sql encoding utf-8

好的,这很奇怪,我真的不知道是什么原因引起了我的问题:

工作流:

  • 我有一个带有utf-8列的常规mysql数据库。
  • 我正在通过简单的输入字段将带有德语变音符号的文本插入此列。
  • 我正在阅读并使用简单查询显示行。

我的问题:

有时候,有时只会显示问号而不是变音符号。 奇怪的是,只有某些词语,而不是所有的变音符号。 例如:“Gummibären”导致“ä”的问号,但“Gumibären”(注意单个“m”)正确显示。所以,我不能在这里找到一个模式。

  • 该列位于utf8_general_ci
  • HTML文件使用<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  • PHP-File本身以utf-8
  • 编码

查询是:

mysqli_query("SET NAMES 'utf8'"); 
$var = "SELECT * FROM table ORDER BY id DESC";

同样奇怪的是,“ä”不是由1个问号代替,而是2个问号,好像有2个字符没有编码而不是1个。

我有什么遗失的吗?

1 个答案:

答案 0 :(得分:1)

我明白了。它与读取或写入数据库并没有任何关系,而是使用PHP函数wordwrap()。如果wordwrap()与多字节unicode字符(例如“ä”等)一起使用,则会使字符串混乱。 我在这个问题的帮助下找到了它:Multi-byte safe wordwrap() function for UTF-8和这个:php wordwrap cut parameter when dealing with weird characters - 供将来参考。

感谢您的投入!