2012-05-13 76 views
2

以下列表中的bug: http://java.net/jira/browse/JAXB-614誰能給我的無效XML字符

上面所說的錯誤,建議我們用下面的鏈接中提到的分辨率: http://blog.lesc.se/2009/03/escape-illegal-characters-with-jaxb-xml.html

的分辨率列表31代碼:

final String escapeString = "\u0000\u0001\u0002\u0003\u0004\u0005" +     
    "\u0006\u0007\u0008\u000B\u000C\u000E\u000F\u0010\u0011\u0012" +    
    "\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001A\u001B\u001C" +    
    "\u001D\u001E\u001F\uFFFE\uFFFF"; 

現在,我的問題是,我可以得到上述代碼的ASCII字符的實際字符?

回答

1

這些字符都不是可打印的。

在Javascript控制檯中粘貼該字符串給出"�"

+0

...,其中一些甚至不存在ASCII(值得注意的是,'\ uFFFE' ,'\ uFFFF') – Amadan

0

ASCII?不,ASCII碼上升到255.實體0x1F和下面的都是控制字符。

http://www.utf8-chartable.de/

+0

感謝您的回覆。實際上,我的目的是向試圖在文本框中輸入字符的最終用戶以及在嘗試將其保存到xml之前顯示無效的xml字符的所有字符(無效的xml字符列表)。 – user1328572

+1

實際上,ASCII只能達到127. –

+0

@MichaelKay我給了擴展的8位ISO 8859-1疑惑的好處,但是你是正確的,ASCII是7位。 –

1

如果您想要以XML格式存儲二進制數據,它會生成s有意識地使用例如Base64編碼。 我不認爲用相同的「無效」字符替換它們是最好的方法。

+0

+1我懷疑,但是,問題是流氓XML文件嵌入字符不匹配在文件的頂部聲明的編碼。 –

0

在google上搜索「java unicode」。實施例導致如下:

http://www.ssec.wisc.edu/~tomw/java/unicode.html

Unicode的被設計成覆蓋所有字符集。原始的「ASCII」僅適用於北美地區。 Java本身已經建立了unicode支持,但仍然有很多字符編碼需要發現:-)

0

我已經寫了一個方法,返回一個包含所有無效XML字符的List<Character>。這幫助我用正則表達式的單元測試來剝離這些字符。您可以查看要點here

如果上面的鏈接停止工作,這裏是代碼:

return IntStream.rangeClosed(0, 65536).filter(XMLChar::isInvalid).mapToObj(c -> new Character((char) c)) 
      .collect(Collectors.toList());