我在 Orbeon Forms 中更改了一个文件,下次加载页面时,我收到一个错误消息,上面写着“无效的 3 字节 UTF-8 序列的第 2 字节”。请问如何解决这个问题?
当Orbeon Forms读取一个XML文件并期望它使用UTF-8编码,但是该文件未正确地以UTF-8编码时,会出现此问题。要解决此问题,请确保:
您在文件开头有一个XML声明,指明该文件采用UTF-8编码:
<?xml version="1.0" encoding="UTF-8" ?>
你的编辑器具备XML感知功能,因此它可以解析XML声明并因此使用UTF-8编码。如果您的编辑器不具备XML感知功能,并且您不想使用其他编辑器,则应查找一个选项或首选项,允许您指定编辑器必须使用UTF-8。
当您启动程序时,请使用以下Java命令行参数:
-Dfile.encoding=UTF-8
java -Dfile.encoding=UTF-8 -jar foo.jar
一个三字节UTF-8序列如下:
1110xxxx 10xxxxxx 10xxxxxx
我在Eclipse中遇到了同样的问题,只是尝试通过更改文件类型解决。
右键单击文件 -> 资源 -> 文本文件编码(UTF-8)
这个解决方案对我有效。
谢谢。
-Dfile.encoding=UTF-8
我正在使用Eclipse,我还必须更改文本文件编码:
->Windows->Preferences->Workspace
然后它就正常工作了。
谢谢
更改输入的编码可能会有帮助:
XMLEventReader eventReader =
inputFactory.createXMLEventReader(in,
"utf-8"
//"windows-1251"
);
遇到了同样的问题。
问题 > 我正在获取X509证书值(多个编码源)以生成PDF报告。 PDF是通过等待UTF-8 xml请求的Web服务生成的,我必须在编组之前重新编码这些值。
解决方案 > http://fabioangelini.wordpress.com/2011/08/04/converting-java-string-fromto-utf-8/
使用这个类:
public class StringHelper {
// convert from UTF-8 -> internal Java String format
public static String convertFromUTF8(String s) {
String out = null;
try {
out = new String(s.getBytes("ISO-8859-1"), "UTF-8");
} catch (java.io.UnsupportedEncodingException e) {
return null;
}
return out;
}
// convert from internal Java String format -> UTF-8
public static String convertToUTF8(String s) {
String out = null;
try {
out = new String(s.getBytes("UTF-8"), "ISO-8859-1");
} catch (java.io.UnsupportedEncodingException e) {
return null;
}
return out;
}
}
使用方法:
//getSummaryAttMap() returns a HashMap
String value = (String) getSummaryAttMap().get(key);
if(value != null)
value = StringHelper.convertToUTF8(value);
else
value = "";