我改变了Orbeon表格文件,并在下次我加载页面,我得到一个错误信息,说3个字节的UTF-8序列的无效字节2。 我怎么解决这个问题?
Answer 1:
这发生在Orbeon形式读取XML文件,并希望它使用UTF-8编码,但不知何故,该文件不是UTF-8编码正确。 为了解决这个问题,请确保:
你必须在文件中说,文件开头的XML声明是UTF-8:
<?xml version="1.0" encoding="UTF-8" ?>
你的编辑器支持XML的,所以它可以解析XML声明,因此使用UTF-8编码。 如果你的编辑器不支持XML,你不希望使用其他编辑器,寻找一个选项或偏好允许您指定的编辑器必须使用UTF-8。
Answer 2:
一个三个字节UTF-8序列的样子:
1110xxxx 10xxxxxx 10xxxxxx
您的错误信息可能意味着三的第一个字节被错误地标记三个字节序列或者第二个字节是畸形的开端。
作为@avernet说,你需要确保系统中的所有元素都生产并期望UTF-8。
Answer 3:
当您启动程序,使用以下Java命令行参数:
-Dfile.encoding=UTF-8
例如,
java -Dfile.encoding=UTF-8 -jar foo.jar
Answer 4:
我在Eclipse中得到了同样的问题,我只是通过更改文件类型尝试。
文件上点击右键 - >资源 - >文本文件编码(UTF-8)
该解决方案为我工作。
谢谢。
Answer 5:
我使用Eclipse和我也不得不更改文本文件编码在:
- > Windows的>首选项 - >工作区
然后,它工作得很好。
谢谢
Answer 6:
您可能需要使用以下参数配置Tomcat的:
-Dfile.encoding = UTF-8
Answer 7:
有同样的问题。
问题 >我得到X509证书值(多编码源)来生成一个PDF报告。 该PDF产生throught即等待一个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 = "";
Answer 8:
我将提供一个特殊的编码答案。 当您检查XML文件并没有什么错,你正在使用Java和运行Tomcat服务器。 你的源代码可能忽视自己指定编码,从而在XML内容作为字符串或其他什么东西,可叫做字符串,这反过来又指Tomcat的默认编码读取时JVM使用默认的编码。 如果XML和Tomcat的编码不一致,也可能会报告相同的错误消息。