我想了解windows智能报价如何变成"â€"

Amb*_*pel 4 mysql ms-word utf-8 character-encoding

这是工作流程:

  1. Word中的用户类型; Word将单个撇号更改为"智能引号"
  2. 用户将测试从单词粘贴到网页上的表单中; 表单所在的页面以UTF-8编码
  3. 数据通过编码保存到MySQL数据库中 latin1
  4. 当PHP应用程序(假设数据库编码为UTF-8)从数据库中检索并显示在UTF-8网页中时,引号显示为"

我意识到输入和输出页面的编码与数据库之间存在不匹配.我要解决的问题.

这个角色不应该在往返数据库的行程中幸存下来吗?

如果一个字符(如果我没有混淆,则为0x92)如何通过该过程并将另一端作为三个字符出现?

有人能跟我说说过程中每个阶段的字节发生了什么吗?

Tim*_*ker 9

步骤1:

Word将转换'(统一代码点U+2019,RIGHT SINGLE QUOTATION MARK).

第2步:

被编码为UTF-8 E2 80 99

第3步:

这似乎是问题发生的地方.看起来UTF-8字符串在latin-1编码的MySQL字段中存储而没有转换:

E2 80 99在拉丁语-1中’.

第4步:

无论是在这里还是在上一步中,错误使用的latin-1字符串都将转换为UTF-8.

’在UTF-8中C3 A2 E2 82 AC E2 84 A2.

这将在UTF-8编码的网站上显示为’.