UTF8大写显示不正确

时间:2014-10-07 18:53:11

标签: html database utf-8 store uppercase

我有一个简单的问题,但我找不到任何解决此问题的方法。

我在数据库(MySQL)中使用utf8_general_ci编码,在网站上是PHP。

在HTML页面中也使用utf-8作为编码(<meta charset="utf-8">)。

问题是在数据库中我有一个以Â开头的单词存储,在enconding之后它显示为Ã,区别在于^和〜之间。未编码:Â。借口:Ã。

问题是在网站上出现这个 ?在Â的位置,但如果我改为小写,它通常会出现。只有大写字母在重音时才会显示错误。

我希望我很清楚。

感谢。

3 个答案:

答案 0 :(得分:1)

您只需要将lang属性添加到网页的html标记中即可。例如。将az更改为您的语言代码。

    <!DOCTYPE html>
    <html lang="az">
      <head>
        <meta charset="utf-8" />
      </head>
      <body>

      </body>
    </html>

答案 1 :(得分:0)

您可能还需要为MySQL链接设置传输字符编码。

mysql_query('SET NAMES "utf8"');
mysql_query('SET CHARACTER SET utf8');
mysql_set_charset('utf8');

如果这没有帮助,请确保服务器不会通过<meta charset="utf-8"> HTTP标头覆盖您的Content-Type。您可能需要使用

覆盖它
header('Content-Type: text/html; charset=utf-8');

答案 2 :(得分:0)

如您所见[{3}},将utf-8解码为windows1252或iso-8859-1会产生Ã,而不是Â。

并且在windows1252中有代码E2,与其unicode代码点U + 00E2一致。 这让我觉得应用程序的某些部分正确解码了utf-8字符串,但未能正确编码。

你应该检查你的数据是否一致地存储在你的数据库的utf-8中,也许你可以选择你的varchar数据作为varbinary来确定(在sqlserver中你可以转换为二进制,在mysql中我不知道是不是作品)。

检查html输出的来源,看看你实际得到的字节数。

这不是一个正确的答案,但是评论太长了......