我在Apache服务器上有几个HTML文件,它们有特殊字符。例如,他们有©而不是©
。它们工作正常但是一旦我将这些文件迁移到新服务器(也是Apache),所有这些字符都没有在浏览器中正确显示。
我知道用HTML实体替换这些字符会更好,但因为它们是成千上万的,所以我不能在短时间内完成它。所以,我的问题是:Apache服务器上是否有任何配置指令必须更改才能正确地为这些文件服务?可以通过更改HTML元标题来解决吗?
Geert 已经对这类问题给出了正确的答案。虽然,在我的情况下,有一些文件用ISO-8859-1编码,其余文件用UTF-8编码。解决方案是将ISO-8859-1转换为UTF-8,可以使用iconv
完成:
iconv --from-code=ISO-8859-1 --to-code=UTF-8 ./from.php > ./to.php
答案 0 :(得分:3)
使用AddDefaultCharset(http://httpd.apache.org/docs/2.0/mod/core.html#adddefaultcharset)在Apache配置中设置正确的编码。例如,对于将UTF-8编码设置为所有文档,可以使用:
AddDefaultCharset utf-8
但是,请仔细使用此指令。它将设置所有文档的字符集,因此您必须确保所有这些文档的编码方式相同。如果您的文档有不同的编码,请不要使用它。
答案 1 :(得分:2)
我假设您没有在head
元素中使用元内容类型标记?
听起来您需要查看旧网站的编码,然后配置Apache以发送相同的编码标头。
检查标题以查看正在发送的内容。
另外,关于你的最后一点,改变......
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
(当然,使用正确的字符集)。
......应该这样做。