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

标签 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 文件本身是用 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/

相关文章:

php - 带有回调OOP的php中的array_map

php - 从 php 回显 html 代码到 html

php - PrestaShop - 覆盖 Controller 不起作用

MySQL shell/client : Read-only access, 或 "safe history"选项?

SQL PageRank 实现

php - 如何从数据库中查找范围值

python - 如何缩小 Django 查询集中的结果范围?

mysql - 我应该如何存储类似的实体 - 在一个表或多个表中?

sql - SQLite Delphi认为不正确的异常

MySQL - 根据周/月数字获取 sum()