iso-8859-1能正确显示德语umlauts吗?还是需要使用utf-8?

4
我有一个多语言网站,托管在似乎将字符编码设置为默认为iso-8859-1的服务器上。
我认为最好将页面设置为utf-8,并包含一个元标记来声明此设置。不幸的是,这个元标记似乎被覆盖了,页面会默认使用iso-8859。
德语和荷兰语页面中的许多特殊字符显示不正确。
我需要尝试更改服务器默认设置为utf-8或其他吗?也许我可以完全删除服务器默认设置?嗯...真的不确定该怎么做才最好。
任何建议都将是非常好的!

实际上,iso-8859-1涵盖了德语和荷兰语。你不需要一开始就转到utf-8...http://en.wikipedia.org/wiki/ISO/IEC_8859-1#Coverage - dkarp
1
@dkarp:一个“多语言网站”意味着不仅要覆盖德语和荷兰语。在这种情况下,UTF-8是必须的,以确保未来语言扩展的安全性。 - BalusC
目前问题的标题是“iso-8859-1能够正确显示德语umlauts吗,还是需要使用utf-8?”,答案是“iso-8859-1可以正常显示德语字符,没有问题”。 - dkarp
谢谢大家。我已经将肉类标签更改为iso-8859-1,并将页面保存为iso-8859-1。这似乎解决了问题。这可能是由于http头默认设置为iso-8859-1,而我将页面保存为utf-8并带有utf-8元标记所导致的问题。这被http头覆盖了,但我猜两者之间的差异可能会引起问题。现在一切都好了!:o) - ade123
3个回答

6
HTML页面在通过HTTP服务时不使用内容类型的HTML元标记。相反,将使用HTTP响应中的内容类型头。您可以使用例如FirebugNet面板中确定内容类型头。

alt text

如何更改这个取决于您使用的编程语言和/或Web服务器,这在您当前的问题中不清楚。根据您的问题历史记录,您似乎正在使用PHP。在这种情况下,您需要在向响应发送任何字符之前将以下行添加到PHP文件中。
header('Content-Type: text/html; charset=UTF-8');

另请参阅:


如果您无法更改HTTP响应头,则需要提供有关您使用的编程语言和Web服务器的更多详细信息。这样我们可以给出更合适的答案。
如果您想坚持使用ISO-8859-1,则需要确保您的页面也保存为ISO-8859-1,而不是UTF-8。否则,当您将以UTF-8保存的资源显示为ISO-8859-1时,一些字符可能会变成乱码mojibake

3
有几种可能的解决方案,但最干净的解决方案是正确声明您的字符编码。在从HTTP服务器提供网页时,编码通常不是通过HTML文件的元标签给出的,而是通过Content-type HTTP头来确定的。Web服务器可能会发送类似于Content-type: text/html; charset=ISO-8859-1的内容,您需要更改它。如何更改取决于Web服务器。此外:是的,iso-8859-1对于德语是可以的;它适用于所有西欧语言。但是,它缺少一些字符,特别是欧元符号(它在iso-8859-15中)。但是,使用UTF-8更好,因为它涵盖了几乎所有语言。

实际上,“ISO-8859-1”通常被解释为类似的windows-1252编码,它包含以及常见的排版字符,如“–„。不过我仍然建议使用UTF-8。 - dan04
@dan04:是的,人们混淆ISO-8859-1和CP-1252确实是真的。但这仍然很糟糕 :-/. - sleske

0

您可以在这篇维基百科文章中看到支持的字符和应涵盖的语言。根据该文章,德语得到了完全支持,而荷兰语则几乎支持完备。

这不仅仅是选择正确的字符编码问题,您还必须使用该编码保存页面。如果将页面保存为ISO-8859-1并使用内容类型表示它是UTF-8,则浏览器会错误地解码它。ISO-8859-1和Unicode都支持您需要的字符,但您必须确保内容类型与页面实际保存方式相对应。


2
只是挑剔一下:ISO-8859-1对于德语和荷兰语来说并不一定足够,因为缺少欧元符号。 - sleske

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接