为什么我的HTML验证器会继续报告与页面编码不同的编码?

时间:2013-03-25 08:38:04

标签: java jsp tomcat encoding

我正在使用local validator.nu实例验证网站,但它一直告诉我编码不匹配:

  

内部编码声明“iso-8859-1”不同意实际情况   编码文件(“utf-8”)。

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

  1. 启动强制LANG='iso-8859-1'
  2. 的流程
  3. 在tomcat启动file.encoding上强制-Dfile.encoding=iso-8859-1,通过选中报告Charset.defaultCharset()的{​​{1}}来确认。
  4. 使用ISO-8859-1复制Maven项目资源:iso-8859-1
  5. JSP <project.build.sourceEncoding>iso-8859-1</project.build.sourceEncoding>指令指定编码:page
  6. <%@page contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" %>已在页眉中设置:Content-Type
  7. Tomcat <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">设置:URIEncoding
  8. 我还能错过什么导致页面以<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" URIEncoding="iso-8859-1" redirectPort="8443" />的形式返回?

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

    更新:我刚决定使用cURL从服务器下载页面,然后上传到the w3 checker,验证成功。它唯一的问题是utf-8的命名应该是iso-8859-1,虽然我认为这两个字符集略有不同,this w3 mailing-list entry但是,我要说的是,我需要研究一下。

    这看起来越来越像validator.nu中的一个错误,我也会查看。

2 个答案:

答案 0 :(得分:1)

我发现了问题!

文档很好,服务器很好,验证器 - 实际上验证正常。在发送给验证程序并给我一个错误错误之前,firefox plugin正在更改页面编码。

我从help@lists.whatwg.org mailing list的帮助中得出了这个结论,并从Fx html5validator addon更改为Fx web developer addon,现在可以正确验证我的文档。现在使用本地验证器实例验证是否正常。

我使用原始的firefox插件this issue

答案 1 :(得分:0)

尝试添加过滤器(在web.xml中使用javax.servlet.Filter<filter>标记声明的<filter-mapping>的实例),它将在ServletRequest和{{{{}}上设置所需的字符编码1}}实例作为参数进入ServletResponse方法。

请参阅javadoc herehere