簡體   English   中英

從html java讀取時保留特殊字符?

[英]Retaining special character while reading from html java?

我正在嘗試讀取包含德語字符的 html 源文件,例如 ä ö ü ß €

使用 JSOUP 讀取

citAttr.nextElementSibling().text() 

將字符串編碼為

unicodeEscaper.translate(citAttr.nextElementSibling().text())

org.apache.commons.lang3.text.translate.UnicodeEscaper

問題是在閱讀字符后變成了

但是,在讀取帶有編碼類型 UTF-8 的 CSV 時,上面的 unicodeEscaper 保存和檢索字符工作正常。

unicodeEscaper.translate(record.get(headerPosition.get(0)))

從 html 讀取有什么問題? 確實嘗試使用 StringUtilEscaper 方法,但字符仍然變成了

private String getText(Part p) throws MessagingException, IOException {
    if (p.isMimeType("text/*")) {
        String s = (String) p.getContent();
        textIsHtml = p.isMimeType("text/html");
        return s;
    }

這就是我閱讀包含 html 內容的電子郵件的方式!

我今天剛剛回答了一個類似的問題......我想我可以輸入我對擴展字符集(外語字符)的了解,因為這是我編寫的軟件的主要方面之一。

  • Java內部的String's全部使用16-bit chars (原始類型char是一個16位的原始值UTF-8這個名字有點誤導,因為它用來表示16位的“Unicode空間”(使用兩個8-位數字)這意味着 Java(和 Java String's表示整個 Unicode 外語字母表范圍沒有問題。
  • JSoup,以及幾乎任何用 Java 編寫的 HTML 工具,當要求下載網站頁面時,將返回 16 位字符 - 作為 Java String's - 很好,沒有任何問題! 如果查看這些范圍時出現問題,則可能不是下載過程,也不是 JSoup 或HttpUrlConnection設置。 當您在 Java 中將網頁保存為字符串時,您並沒有丟失這些字符,您實際上“免費”獲得了UTF-8
  • 但是:每當程序員嘗試將UTF-8 String保存到'.txt' File'.html' File ,如果您繼續在網絡瀏覽器中查看該內容(該文件),您可能會看到那個煩人的問號: 。 這是因為您需要確保讓您的網絡瀏覽器知道您使用 Java 保存的'.html' File -不打算使用(更舊,更短的) 8-bit ASCII范圍進行解釋。

如果您在任何網絡瀏覽器中查看'.html' File ,或將該文件上傳到 Google Cloud Platform(或某個托管站點),則必須執行以下兩項操作之一:

  • 包括注釋中提到的<META> Tag<meta charset="UTF-8">在 HTML 頁面的<HEAD> ... </HEAD>部分。
  • 或者在您必須將文件標識為'text/html, charset=UTF-8'任何托管平台中提供設置。 在 Google Cloud Platform Storage Buckets 中,有一個彈出菜單可以將此設置分配給任何文件。

暫無
暫無

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

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