我想了解windows智能报价如何变成“—

时间:2012-09-19 11:06:32

标签: mysql utf-8 character-encoding ms-word

这是工作流程:

  1. Word中的用户类型; Word将单个撇号更改为“智能引用”
  2. 用户将测试从单词粘贴到网页上的表单中;表单所在的页面以UTF-8
  3. 编码
  4. 使用编码latin1
  5. 将数据保存到MySQL数据库中
  6. 当PHP应用程序(假设数据库编码为UTF-8)从数据库中检索并显示在UTF-8网页中时,引号显示为“
  7. 我意识到输入和输出页面的编码与数据库之间存在不匹配。我要解决的问题。

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

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

    有人可以告诉我过程中每个阶段的字节发生了什么吗?

1 个答案:

答案 0 :(得分:9)

第1步:

Word会将'转换为(Unicode代码点U+2019RIGHT 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编码的网站上显示为’