这是工作流程:
latin1
我意识到输入和输出页面的编码与数据库之间存在不匹配。我要解决的问题。
这个角色不应该在往返数据库的行程中幸存下来吗?
如果一个字符(如果我没有混淆,则为0x92)如何通过该过程并将另一端作为三个字符出现?
有人可以告诉我过程中每个阶段的字节发生了什么吗?
答案 0 :(得分:9)
第1步:
Word会将'
转换为’
(Unicode代码点U+2019
,RIGHT SINGLE QUOTATION MARK
)。
第2步:
’
被编码为UTF-8 E2 80 99
第3步:
这似乎是问题发生的地方。看起来UTF-8字符串在latin-1编码的MySQL字段中存储而没有转换:
latin-1中的 E2 80 99
为’
。
第4步:
在此处或上一步中,错误使用的latin-1字符串将转换为UTF-8。
UTF-8中的 ’
为C3 A2 E2 82 AC E2 84 A2
。
这将在UTF-8编码的网站上显示为’
。