2012-07-03 63 views

回答

9

Orbeon Forms讀取XML文件並希望它使用UTF-8編碼時發生這種情況,但不知何故文件未以UTF-8正確編碼。爲了解決這個問題,請確保:

  1. 您有一個XML聲明在文件說,該文件的開頭是UTF-8:

    <?xml version="1.0" encoding="UTF-8" ?> 
    
  2. 你的編輯器支持XML,所以它可以解析XML聲明並因此使用UTF-8編碼。如果您的編輯器不支持XML,並且您不想使用其他編輯器,請查找允許您指定編輯器必須使用UTF-8的選項或首選項。

+0

如果有人對Java和編碼(以及這些類型的錯誤)的更通用的討論感興趣,你可以閱讀http://stackoverflow.com/questions/29434896/how-to-deal-with-java-encoding-問題 - 尤其是XML的 – Giovanni

0

我使用Eclipse和我也不得不更改文本文件編碼在:

- > Windows的>首選項>工作區

然後它工作得很好。

感謝

4

一個三個字節UTF-8序列的樣子:

1110xxxx 10xxxxxx 10xxxxxx 

你的錯誤信息可能意味着三的第一個字節被錯誤地標記三個字節序列或其他的開始第二個字節格式不正確。

正如@avernet所說,您需要確保系統中的所有元素都在生成和期待UTF-8。

0

您可能需要使用以下參數配置Tomcat的:

-Dfile.encoding = UTF-8

0

曾有同樣的問題。

問題>我得到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 = ""; 
3

當您啓動程序,使用下面的Java命令行參數:

-Dfile.encoding=UTF-8 

例如,

java -Dfile.encoding=UTF-8 -jar foo.jar 
1

我在Eclipse同樣的問題,我只是通過更改文件類型嘗試。

右鍵點擊文件 - >資源 - >文本文件編碼(UTF-8)

該解決方案爲我工作。

謝謝。

0

我會提供一個特殊的編碼答案。當你檢查xml文件並沒有什麼錯誤時,你正在使用Java並運行Tomcat服務器。您的源代碼可能會忽略自己指定的編碼,因此JVM在xml內容中以字符串或其他字符串形式讀取時使用默認編碼,這反過來又引用了Tomcat的默認編碼。如果xml和Tomcat的編碼不一致,它也可能會報告相同的錯誤消息。

相關問題