我更改了Orbeon Forms中的文件,並且在下次加載頁面時,出現錯誤消息3字節UTF-8序列的無效字節2。我怎麼解決這個問題?消息「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的選項或首選項。
我使用Eclipse和我也不得不更改文本文件編碼在:
- > Windows的>首選項>工作區
然後它工作得很好。
感謝
一個三個字節UTF-8序列的樣子:
1110xxxx 10xxxxxx 10xxxxxx
你的錯誤信息可能意味着三的第一個字節被錯誤地標記三個字節序列或其他的開始第二個字節格式不正確。
正如@avernet所說,您需要確保系統中的所有元素都在生成和期待UTF-8。
您可能需要使用以下參數配置Tomcat的:
-Dfile.encoding = UTF-8
曾有同樣的問題。
問題>我得到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 = "";
當您啓動程序,使用下面的Java命令行參數:
-Dfile.encoding=UTF-8
例如,
java -Dfile.encoding=UTF-8 -jar foo.jar
我在Eclipse同樣的問題,我只是通過更改文件類型嘗試。
右鍵點擊文件 - >資源 - >文本文件編碼(UTF-8)
該解決方案爲我工作。
謝謝。
我會提供一個特殊的編碼答案。當你檢查xml文件並沒有什麼錯誤時,你正在使用Java並運行Tomcat服務器。您的源代碼可能會忽略自己指定的編碼,因此JVM在xml內容中以字符串或其他字符串形式讀取時使用默認編碼,這反過來又引用了Tomcat的默認編碼。如果xml和Tomcat的編碼不一致,它也可能會報告相同的錯誤消息。
- 1. org.xml.sax.SAXParseException:3字節UTF-8序列的無效字節2
- 2. MalformedByteSequenceException:2字節的UTF-8序列無效的字節2
- 3. JSF 2異常:com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException:3字節UTF-8序列的無效字節2
- 4. com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException:4字節UTF-8序列(XML)的無效字節2
- 5. 消息:hadoop中1字節UTF-8序列的無效字節1
- 6. APPCRASH消息的細節是什麼意思?
- 7. 散列time_t的字節是什麼意思?
- 8. Selenium Web驅動程序:MalformedByteSequenceException 2字節UTF-8序列的無效字節2
- 9. Cassandra 1.2.5 - 無效的UTF8字節
- 10. PostgreSQL的:「無效的字節序列編碼‘UTF8’:只對錯誤
- 11. 這是什麼意思,一個節點集是無序的?
- 12. Postgresql PHP無效的字節序列編碼UTF8
- 13. PostgreSQL - Psycopg2 - copy_from - 用於編碼「UTF8」的無效字節序列:0x00
- 14. 藥劑 - Postgres的:編碼無效字節序列\「UTF8 \
- 15. 用於編碼「UTF8」的無效字節序列:0xed 0xa0 0xbd
- 16. PostgreSQL + PHP + UTF8 =用於編碼的無效字節序列
- 17. 我遇到無效UTF8字節序列的問題
- 18. Rails 3中,Heroku的 - PGError:錯誤:編碼 「UTF8」 無效的字節序列:
- 19. 「內存是8字節對齊」是什麼意思?
- 20. 字體大小-2是什麼意思?
- 21. 具有特殊字符的Facelets頁面導致MalformedByteSequenceException:UTF8Reader.invalidByte中的3字節UTF-8序列的無效字節2
- 22. 剝離的JAR(方法沒有字節碼)是什麼意思?
- 23. 「UNIX字節流的組成」是什麼意思?
- 24. 「......的字節分配內存不足」是什麼意思? (Android)
- 25. android.nfc.tech.NfcV getResponseFlags返回的字節是什麼意思?
- 26. 0b是什麼意思在字節的開頭0b1100010
- 27. 最不重要的字節是什麼意思?
- 28. make [1]中的數字make [2] make [3]是什麼意思?
- 29. 的PyUnit:無法讀取XML-RPC請求:無效字節2 3字節的UTF-8序列
- 30. 什麼意思是在Bittorrent的握手信息之前的長字節流?
如果有人對Java和編碼(以及這些類型的錯誤)的更通用的討論感興趣,你可以閱讀http://stackoverflow.com/questions/29434896/how-to-deal-with-java-encoding-問題 - 尤其是XML的 – Giovanni