UTF8大写显示不正确
我有一个简单的问题,但我没有找到任何解决此问题的方法。UTF8大写显示不正确
我在数据库(MySQL)中使用utf8_general_ci编码,而在网站中使用的是PHP。
在HTML页面中也使用utf-8作为编码(<meta charset="utf-8">
)。
问题是,在数据库中我存储了一个以Â开头的单词,在引用之后它显示为Ã,差异在^和〜之间。未编码:Â。附:Ã。
问题是,在网站上出现这个 ?在Â的地方,但如果我改变它的小写它通常出现。只有大写字母在加重时出现错误。
我希望我很清楚。
谢谢。
您可能还需要设置MySQL链接的传输字符编码。
mysql_query('SET NAMES "utf8"');
mysql_query('SET CHARACTER SET utf8');
mysql_set_charset('utf8');
如果这没有帮助,请确保服务器不会覆盖您的<meta charset="utf-8">
通过Content-Type
HTTP标头。您可能需要覆写以及使用
header('Content-Type: text/html; charset=utf-8');
感谢您的快速回答。我会尽力做到这一点。只有一个问题,如果其他小写字母与编码工作为什么不大写? – Fred 2014-10-07 19:01:36
这可能是小写重音字符与您正在通信的字符集共享相同的UTF-8代码,但大写字母与其他编码中的其他位置不同。也许他们在小写字母之后再加一个字符,并将整个大写字母部分移动一个。 – Zenorbi 2014-10-07 19:05:53
它不工作......现在出现这封信,但其他人看起来像这样:á。它不是“解码”,如果在数据库中是Â它看起来像Â,如果我把它看起来Ã。但编码的出现编码。 – Fred 2014-10-07 19:06:30
正如你可以看到here,解码UTF-8编码的Windows1252或ISO-8859-1产生,而不是一个。
并且在windows1252中有E2代码,它与它的unicode代码点U + 00E2一致。 这使我认为你的应用程序的某些部分正确解码utf-8字符串,但未能正确编码它。
你应该检查你的数据是否一致地存储在你的数据库的utf-8中,也许你可以选择你的varchar数据作为varbinary来确定(在sqlserver中你可以转换为二进制,在mysql中我不知道是否有用)。
并检查您的html输出的来源,看看你实际得到什么字节。
这不是正确的答案,但太长了评论...
什么DBMS?你使用的是ASP吗? PHP的? – 1010 2014-10-07 18:56:01
已经编辑过,我正在使用PHP。 DB是MySQL。谢谢您的帮助。 – Fred 2014-10-07 18:56:48
你是否检查过浏览器的字符编码? – 1010 2014-10-08 03:03:47