PHP字符串编码问题 - 出现额外字符

时间:2012-12-14 17:02:16

标签: php html utf-8 character-encoding

  

可能重复:
  How to fix double-encoded UTF8 characters (in an utf-8 table)

我看到额外的字符,比如因为我在这里发现的编码问题而显示 - HTML encoding issues - "Â" character showing up instead of " "

据我所知,如果我将浏览器元编码设置为UTF-8,这些不会影响任何内容,但我需要从数据库中剥离这些额外的字符用于其他目的。

例如。 :

Text: ↑应该成为Text: ↑

但如果我通过utf8_decode运行它,它会给我Text: �??

对于â字符的每次出现,它都会正确转换为空格。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您的问题中没有分享太多信息,但根据您提供的示例:

↑ (has been imported as) ↑

这看起来你已经将它作为UTF-8存储到导出文件中,但在导入时告诉你该文件将是Windows-1252编码的。然后它再次被重新编码为UTF-8。

↑                                 UTF8: \xE2\x86\x91    UPWARDS ARROW (U+2191)

â  - Windows 1252     \xE2 226    UTF8: \xC3\xA2        LATIN SMALL LETTER A WITH CIRCUMFLEX (U+00E2)
†  - Windows 1252     \x86 134    UTF8: \xE2\x80\xA0    DAGGER (U+2020)
‘  - Windows 1252     \x91 145    UTF8: \xE2\x80\x98    LEFT SINGLE QUOTATION MARK (U+2018)

在MySQL中,Windows 1252字符集的名称为latin1(cp1252西欧,specific differences documented),有关完整列表,请参阅Character Sets and Collations That MySQL Supports

这就是the related Q&A works中的解决方案。