我有一个简单的问题,但我找不到任何解决此问题的方法。
我在数据库(MySQL)中使用utf8_general_ci编码,在网站上是PHP。
在HTML页面中也使用utf-8作为编码(<meta charset="utf-8">
)。
问题是在数据库中我有一个以Â开头的单词存储,在enconding之后它显示为Ã,区别在于^和〜之间。未编码:Â。借口:Ã。
问题是在网站上出现这个 ?在Â的位置,但如果我改为小写,它通常会出现。只有大写字母在重音时才会显示错误。
我希望我很清楚。
感谢。
答案 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输出的来源,看看你实际得到的字节数。
这不是一个正确的答案,但是评论太长了......