Java 为什么我的HTML验证程序不断报告与页面不同的编码?
我正在使用一个实例验证站点,但它不断告诉我编码不匹配: 内部编码声明“iso-8859-1”与实际编码不一致 文件编码(“utf-8”) 我已经尽了一切努力尝试将编码强制为iso-8859-1,因为我们使用的是需要这种编码的遗留数据库Java 为什么我的HTML验证程序不断报告与页面不同的编码?,java,jsp,tomcat,encoding,Java,Jsp,Tomcat,Encoding,我正在使用一个实例验证站点,但它不断告诉我编码不匹配: 内部编码声明“iso-8859-1”与实际编码不一致 文件编码(“utf-8”) 我已经尽了一切努力尝试将编码强制为iso-8859-1,因为我们使用的是需要这种编码的遗留数据库 启动的过程强制执行LANG='iso-8859-1' 在tomcat启动时强制执行file.encoding,这可以通过检查报告iso-8859-1的Charset.defaultCharset()来确认 Maven项目资源是通过iso-8859-1复制的:iso
LANG='iso-8859-1'
file.encoding
,这可以通过检查报告iso-8859-1
的Charset.defaultCharset()
来确认iso-8859-1
复制的:iso-8859-1
page
指令指定编码:
内容类型已在页眉中设置:
URIEncoding
set:
utf-8
有趣的是,它正确地呈现了像©这样的字符,如果将©放在文本输入中,它将使用8859-1代码页正确地保存到DB中
更新:我刚刚决定使用cURL从服务器下载一个页面,并将其上载到已成功验证的页面。它唯一的问题是iso-8859-1
的命名应该是windows-1252
,尽管我认为这两个字符集略有不同,但如果不是这样,我需要研究一下
这看起来越来越像一个bug,我也将研究它。尝试添加一个过滤器(用web.xml中的
和
标记声明的javax.servlet.filter的实例)这将在进入doFilter()
方法的ServletRequest
和ServletResponse
实例上设置所需的字符编码作为参数
请参阅javadoc和。我发现了问题
文档很好,服务器很好,验证器-实际上验证很好。在发送给验证器并给我一个错误之前,更改页面编码的是
我从上的帮助中得出了这一结论,并将从更改为,这将正确验证我的文档。现在使用本地验证器实例可以很好地进行验证
我已经使用了最初的firefox插件。您是否检查了服务器返回的HTTP内容类型
标题?@artbristol,firebug将响应标题报告为:内容类型文本/html;charset=ISO-8859-1
根据验证程序邮件列表中的建议,请指定页面的URL,允许人们访问实际的HTTP头和发送的实际数据。@JukkaK.Korpela,很遗憾,我没有访问权限,该应用程序是一个内部应用程序,我没有访问公共tomcat实例的权限。@JukkaK.Korpela,我已经设法借用了一个端点来承载测试。因此,尽管我无法长时间完成此操作:。是的,我尝试添加的spring实现,但没有成功。@BrettRyan只是想确定:您是否强制执行了筛选器的字符编码(init param forceEncoding=true)?另外,如果您使用的是SpringMVC,那么这种情况可能会有所帮助:我没有使用Spring,只是觉得我应该尝试一个经过验证的过滤器,是的,我确实尝试了强制编码。实际上,我开始认为是验证程序告诉了我错误的事情,我看不到任何证据表明返回的页面是用utf-8编码的。使用验证程序插件的一个相当恼人的副作用是它只传递URL而不是页面内容。如果请求参数用于生成页面内容,并且url已被重写,则不可能使用验证器返回相同的页面,因此它不会验证您正在查看的内容。