我正在使用JSF 2和Tomcat 6开发Web应用程序。当我尝试加载有问题的页面时,我收到以下异常:com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 2 of 3-byte UTF-8 sequence
。我在显示文本中加入了西班牙语字符,我发现它们导致了异常。例如,<p>ñ</p>
会导致错误,但<p>n</p>
可以正常工作。请注意,此示例文本是硬编码的,并包含在<ui:define>
标记中。
我还要注意,在客户端.xhtml文件(有问题的页面)中使用了一个模板。模板文件具有<?xml version="1.0" encoding="UTF-8"?>
声明。关于可能出现什么问题的任何建议?我已经搜索了互联网和SO,并且有很多关于这个特定异常的问题,但大多数都不涉及JSF,但涉及影响可能导致问题的原因的其他细节。谢谢你的建议。
答案 0 :(得分:3)
经过进一步调查(试验和错误)后,我通过更改Eclipse中的设置使其工作。我没有在问题中提到我使用Eclipse,出于对这个问题的无知我猜...后见之明。无论如何,这就是我所做的,使我的页面显示带有西班牙语重音字符的文本:在Eclipse中,在Preferences/General/Workspace
下,有一个“文本文件编码”选项,设置为默认值“Cp1252”。我将其更改为使用UTF-8,并且它有效。我还更改了“编码”设置,以便在每个下面使用UTF-8:Preferences/Web/CSS Files
,Preferences/Web/HTML Files
和Preferences/XML/XML Files
。在最终找到“常规/工作区”设置之前,我已经更改了这些(没有成功显示重音字符),所以我不确定它们是否有影响。