【发布时间】:2011-12-10 05:30:56
【问题描述】:
我有一个用
声明编码的页面<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
但是当我进入页面时,在浏览器中选择了另一种编码 (ISO)。我尝试通过PHP方法设置编码
header('Content-type: text/html; charset=utf-8');
但这也无济于事。所有源文件都以 UTF-8 编码,没有 BOM。我尝试过的唯一解决方案是通过添加AddDefaultCharset UTF-8 行在.htaccess 文件中设置编码,但是服务器上的其他页面没有正确显示。我该如何解决这个问题?
【问题讨论】:
-
请注意,当通过 HTTP 提供页面时,元内容类型标记将被忽略。仅当您让浏览器将页面保存到磁盘然后通过
file:///从磁盘打开它时使用。当通过 HTTP 提供页面时,使用 HTTP 响应Content-Type标头的charset属性中指定的字符集。也许您在 PHP 中设置标头为时已晚(必须在向响应写入任何位之前设置它,但是如果您设置了正确的 PHP 错误报告级别,您会收到此错误的通知)。 -
您如何识别编码不同?字符显示不正确?是否是 SQL DB 获取的文本,在这种情况下 mysql_set_charset 可以提供帮助...
-
@Ergo:在
.htaccess中设置AddDefaultCharset UTF-8无法解决这个问题。 -
啊,不知道-谢谢! +1
-
@BalusC:
<meta>是用于确定页面的字符编码,即使该页面是通过 HTTP 提供的。但是,Content-Type 标头优先于<meta>标记(如果存在)。见w3.org/TR/html401/charset.html#h-5.2.2
标签: php html utf-8 character-encoding