簡體   English   中英

utf-8轉換並不總是有效

[英]utf-8 convertion doesn't work always

我搜索了其他堆棧,然后在此處鍵入內容,但沒有發現任何類似內容。 我必須抓取不同的utf-8網頁,其中包含類似

“ Oggièuna bellissima giornata”

問題出在字符“è”上

我使用jtidy和xpath查詢表達式提取此文本,然后將其轉換為

byte[] content = filteredEncodedString.getBytes("utf-8");
String result = new String(content,"utf-8");

其中filteredEncodedString包含文本“ Oggièuna bellissima giornata”。 到目前為止,此過程適用於分析最多的網頁,但在某些情況下,它不會提取utf-8字符串。 頁面編碼總是一樣,文本也一樣。

編輯於9月14日

我修改了我的代碼,如下所示以utf-8編碼獲取頁面:

URL url = new URL(currentUrl);
        URLConnection conn = url.openConnection();
        conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 (.NET CLR 3.5.30729)");
        BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), getEncode()));

        String line="";
        String domString="";
        while((line = in.readLine()) != null) {
            domString+=line.toString();
        }

        byte[] bytes = domString.getBytes("UTF-8");
        in.close();

        return bytes;
        //return text.getBytes();

其中getEncode()返回頁面編碼,在這種情況下為utf-8。 但是我仍然注意到ì或é讀取不正確。 這段代碼有什么問題嗎? 再次感謝!

10月2日編輯

此代碼似乎有效。 問題出在Dom Document創建中,我沒有發布(很抱歉!),上面的方法返回了字節。

您不能在事實之后將字符串“轉換”為utf-8。 如果字節被錯誤地轉換為char,則說明您已經丟失了數據。

您可以嘗試以字節數組而不是字符串的形式獲取頁面,然后使用StringUtils將其轉換為utf-8字符串。

暫無
暫無

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

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