3

我正在使用本地 validator.nu实例来验证站点,但是它一直告诉我编码不匹配:

内部编码声明“iso-8859-1”与文档的实际编码(“utf-8”)不一致。

我已尽一切努力尝试将编码强制为 iso-8859-1,因为我们正在使用需要此编码的旧版数据库。

  1. 启动力量的过程LANG='iso-8859-1'
  2. 强制file.encoding启动 tomcat -Dfile.encoding=iso-8859-1,这可以通过检查Charset.defaultCharset()哪些报告来确认ISO-8859-1
  3. Maven 项目资源通过以下方式复制iso-8859-1<project.build.sourceEncoding>iso-8859-1</project.build.sourceEncoding>
  4. JSPpage指令指定编码:<%@page contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" %>
  5. Content-Type已在页眉中设置:<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
  6. 雄猫URIEncoding套装:<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" URIEncoding="iso-8859-1" redirectPort="8443" />

我还能错过什么导致页面返回的原因utf-8

有趣的是,它正确地呈现了像 © 这样的字符,如果将 © 放置在文本输入中,它会使用 8859-1 代码页正确保存到数据库中。

更新:我刚刚决定使用 cURL 从服务器下载一个页面并上传到成功验证的 w3 检查器。唯一的问题是iso-8859-1应该的命名,windows-1252尽管我认为这两个字符集略有不同,但这个 w3 邮件列表条目却说不然,我需要研究一下。

这看起来越来越像validator.nu中的一个错误,我也会对此进行研究。

4

2 回答 2

1

我发现问题了!

文档很好,服务器很好,验证器 - 实际上验证很好。Firefox 插件在发送到验证器之前更改了页面编码并给了我一个错误的错误。

我从help@lists.whatwg.org 邮件列表的帮助中得出了这个结论,并将Fx html5validator 插件更改为Fx Web 开发人员插件,该插件现在可以正确验证我的文档。使用本地验证器实例现在可以很好地验证。

我原来的firefox插件有这个问题。

于 2013-03-27T01:19:23.787 回答
0

尝试添加一个过滤器(web.xml 中javax.servlet.Filter声明的带有<filter><filter-mapping>标签的实例),它将设置所需的字符编码,ServletRequest并将实例作为参数ServletResponse进入方法。doFilter()

请参阅此处此处的javadoc 。

于 2013-03-25T09:47:07.117 回答