[英]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.