簡體   English   中英

SERE0014:非法的HTML字符-解析控制字符時出現十進制129異常

[英]SERE0014: Illegal HTML character - decimal 129 exception while parsing control characters

最近,在一個案例中,我發現了一個帶有控制字符的字符串,我們將該字符串保存到數據庫中,並嘗試從中創建xml和HTML文件。 它已正確保存在數據庫中,並在不同位置顯示如下。
1)查詢數據庫時,名稱顯示為 在此處輸入圖片說明
2)當我將其復制到記事本++(UTF-8編碼)時,顯示為 在此處輸入圖片說明
3)在Eclipse IDE中,調試模式將其顯示為與DB相同。
4)在HTML頁面(apache / tomcat)中的表記錄中,以及在控制台中的sysout輸出中顯示為簡單 在此處輸入圖片說明 ,我認為這是更可取的預期輸出。

我能夠創建帶有垃圾字符的XML文件,但是當我嘗試使用具有UTF-8編碼的javax TransformerFactory創建HTML時。 transformer.transform(source, result);
引發異常“ HTML字符非法-十進制129”
我知道字符串中存在一些UTF-8不支持的控制字符,因此解析器將拋出此異常。
我在這里找到了它的引用: https : //www.fileformat.info/info/unicode/char/0081/index.htm

為了解決這個問題,我嘗試了很多事情,但是結果接近預期的一件事是在將字符串交給解析器之前將其手動解析,然后將其更改為UTF-8字符串,如下所示:
String str = new String(nodeValue.getBytes(StandardCharsets.US_ASCII), StandardCharsets.UTF_8); str = str.replaceAll("[^\\p{ASCII}]", "");

這可以在一定程度上解決問題,但是我認為解析整個內容並不是從String中刪除1個控制字符的最佳方法,這也可以轉換名稱 在此處輸入圖片說明 在此處輸入圖片說明 這不是可取的,我實際上希望它沒有任何變化。

有沒有標准的方法可以做到這一點,以便我們可以在解析的HTML中獲得正確的輸出?

sysout和apache tomcat的HTML頁面如何正確顯示它? 他們會明確處理嗎?

 不管您如何在文檔中將其表示為字符,在HTML中都是非法的。

似乎有人在測試您。 GUI不應允許它,或者您不得不忍受無法以HTML形式顯示它。 如果只需要顯示它,則可以將其轉換為圖像。 不幸的是,[HOP]沒有相應的控制畫面

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM