我运行一个个人网站,总是正确显示重音字符。现在,突然之间,它不再存在了。有趣的是,即使它的本地主机版本也没有。
在这方面,应用程序多年来没有改变,下面是它按照给定的顺序所做的:
-
mysql database set to collation utf8_general_ci
-
应用程序发送这两个查询:"设置名称'utf8'整理'utf8'"one_answers"SET CHARACTER_SET 'utf8'"
-
Php headers在打印任何内容之前发送以下头:头('的content - type: text/xml;charset = utf - 8"。 r n");头(Content-transfer-encoding: utf - 8"。 r n");
-
每个网页显示一个元标签如下:meta http-equiv="content-type" content="text/html;utf - 8字符集= "/祝辞
然而,现在,突然,字符显示全错了。如果我手动替换字符,它们将按预期显示。但我无法理解是否或什么可能"破坏"了数据库。当然,我无法手动修改数百个帖子。
知道为什么这个奇怪的事情突然发生和建议如何解决它吗?
错误行实例:"Non ho mai avuto l' opportunità di incontrarti di persona "。Non so se èperchèNon ho cercato abbastanza l' o perchè"等…
è
是è
的Mojibake。你以为会有葬礼吗?不管什么改变了或没有改变,让我们看看如何修复它。
查看this查找Mojibake。它说检查/修复这些:
- 需要存储的字节是utf -8编码的。解决这个问题。
- 插入和选择文本时需要指定utf8或utf8mb4。解决这个问题。
- 列需要声明为字符集utf8(或utf8mb4)。解决这个问题。
- HTML应该以。 开头
还可以查看检查为è
存储的HEX的技术:
- utf8十六进制是
C3A8
。 - 十六进制
C383C2A8
意味着你有"双重编码";这将导致其他问题。 -
E8
是拉丁十六进制——我怀疑你是否会看到这个。