我有一个托管在服务器上的多语言网站,该服务器似乎将字符编码设置为默认为 iso-8859-1。
我想我最好拥有 utf-8 页面并包含一个元标记来声明这一点。不幸的是,这个元标记似乎被覆盖了,页面默认为 iso-8859。
德语和荷兰语页面中的许多特殊字符未正确显示。
我是否需要尝试将服务器默认更改为 utf-8 之类的?也许我可以完全删除服务器默认值?嗯......真的不知道在这里做什么最好。
任何建议都会很棒!
我有一个托管在服务器上的多语言网站,该服务器似乎将字符编码设置为默认为 iso-8859-1。
我想我最好拥有 utf-8 页面并包含一个元标记来声明这一点。不幸的是,这个元标记似乎被覆盖了,页面默认为 iso-8859。
德语和荷兰语页面中的许多特殊字符未正确显示。
我是否需要尝试将服务器默认更改为 utf-8 之类的?也许我可以完全删除服务器默认值?嗯......真的不知道在这里做什么最好。
任何建议都会很棒!
当 HTML 页面通过 HTTP 提供时,不使用内容类型的 HTML 元标记。相反,将使用 HTTP 响应中的内容类型标头。您可以在Net面板中使用例如Firebug来确定内容类型标头。
如何更改这取决于您使用的编程语言和/或网络服务器,这在您当前的问题中尚不清楚。根据您对历史的质疑,您似乎正在使用 PHP。在这种情况下,您需要在向响应中发出任何字符之前,将以下行添加到 PHP 文件中。
header('Content-Type: text/html; charset=UTF-8');
如果您无法更改 HTTP 响应标头,则必须提供有关您正在使用的编程语言和网络服务器的更多详细信息。通过这种方式,我们可以为您提供更合适的答案。
如果您想坚持 ISO-8859-1,那么您需要确保您的页面也保存为 ISO-8859-1 而不是 UTF-8。否则,当您将 UTF-8 保存的资源显示为 ISO-8859-1 时,某些字符可能确实会mojibake 。
有几种可能的解决方案,但最干净的解决方案是正确声明您的字符编码。
从 HTTP 服务器提供网页时,编码通常不是由 HTML 文件的元标记给出,而是由Content-type
HTTP 标头给出。
网络服务器可能正在发送类似的内容Content-type: text/html; charset=ISO-8859-1
,您需要更改它。
如何做到这一点取决于网络服务器。
另外:是的,iso-8859-1 适用于德语;它适用于所有西欧语言。但是,它缺少一些字符,尤其是欧元符号(即在 iso-8859-15 中)。但是使用 UTF-8 更好,因为它几乎涵盖了所有语言。
您可以在此 Wikipedia 文章中查看支持的字符和应涵盖的语言。据此,完全支持德语,几乎支持荷兰语。
这不仅仅是选择正确的字符编码的问题,您还必须使用该编码保存页面。如果您将页面保存为 ISO-8859-1 并使用说明它是 UTF-8 的内容类型,那么浏览器将错误地解码它。ISO-8859-1 和 Unicode 都支持您需要的字符,但您必须确保内容类型与页面的实际保存方式相对应。