我在 Windows XP SP3 (TR) 下使用 Firefox 3.5.4 (EN)。当我打开公司的网络报告页面时,土耳其语字符无法正确显示,因此我必须手动将字符编码设置从西方 (Windows-1252) 更改为土耳其语 (Windows-1254)。我在其他土耳其网站上没有遇到这个问题,因为它们会自动将编码更改为土耳其语。
如何让 Firefox 自动找到有问题的网站的正确字符编码设置?
编辑:在相关页面的源代码中我发现了以下代码行:
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="TEXT/HTML; CHARSET=WINDOWS-1254">
答案1
通常情况下,除非服务器指定编码,否则将遵循页面的编码。由于标签<meta>
似乎指定了您的期望,并且手动切换到该值有帮助,因此听起来您从中获取页面的服务器在标头中向浏览器发送了错误的编码 (Windows-1252)。
正确的解决方法是正确配置服务器。对于公司网络服务器,这可能意味着让服务器管理员来做这件事。
要查看(错误的)标头,如果您熟悉此类工具,则可以使用 Firefox 中的 Firebug 的“网络”面板或 Chrome 或 Safari 中的 Web Inspector 的“资源”面板。或者,如果您不了解这些工具并且该网站是公开访问的,那么您可以使用以下方法轻松在线查看服务器的标头:网络嗅探器。
假设登录页面指定与实际页面相同,则会产生:
Content-Type: text/html
...没有任何值charset
。不确定浏览器是否仍应解释该<meta>
标签,但显然 Firefox 正在忽略它并做出一些最佳猜测。
Firefox 忽略它可能是 HTML 源导致的。该<meta>
标签应始终在其他任何内容之前指定<head>
,因为它可能也适用于标题、脚本、CSS 等。在这个网站上,它没有,更糟糕的是,HTML 是一团糟:
<SCRIPT LANGUAGE=JavaScript SRC="/dergi/_ScriptLibrary/pm.js"></SCRIPT>
<SCRIPT LANGUAGE=JavaScript>
thisPage._location = "/dergi/giris/login.asp";
</SCRIPT>
<FORM name=thisForm METHOD=post>
<HTML>
<style type="text/css">
<!--
[..]
-->
</style>
<HEAD>
[..]
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="TEXT/HTML; CHARSET=WINDOWS-1254">
<META NAME="GENERATOR" CONTENT="Microsoft FrontPage 5.0">
<META NAME="AUTHOR" CONTENT="[removed to protect the innocent...]">
<TITLE>YAYSAT DERGİ RAPORLARI</TITLE>
</HEAD>
<BODY>
<center>
[..]
</center>
</body>
<INPUT type=hidden name="_method">
<INPUT type=hidden name="_thisPage_state" value="">
</FORM>
</html>
巨大的开发商失败。
(顺便说一句,Web-Sniffer 显示<meta http-equiv=content-type content="text/html; charset=ISO-8859-1">
,但这是由于它的值Accept-Charset
。Firebug 显示的内容<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="TEXT/HTML; CHARSET=WINDOWS-1254">
与问题中的一样。)
答案2
Firefox 附加组件字符集切换器如果您无法控制网站内容,它可能会为您提供帮助。
如果你问应该生成什么 html,那么我首先要说的是文本根本不应该用 进行编码Windows-1254
。Html 页面应该更正确地用 进行编码UTF-8
,因为这种编码更能确保在所有浏览器和所有客户端操作系统上正确显示。
该标签应如下所示:
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
答案3
这个错误(Firefox 4.0.1) 已经被报告了:https://bugzilla.mozilla.org/show_bug.cgi?id=651142