我想一個UTF-8字符串中的Java字符串轉換爲ISO 8859-1在Java中
編碼爲ISO 8859-字符串我有這樣的:
String title = new String(item.getTitle().getText().getBytes("ISO-8859-1"));
但不工作,輸出Sørensen例如
我想一個UTF-8字符串中的Java字符串轉換爲ISO 8859-1在Java中
編碼爲ISO 8859-字符串我有這樣的:
String title = new String(item.getTitle().getText().getBytes("ISO-8859-1"));
但不工作,輸出Sørensen例如
這個問題不是一個需要解決的方式。 Java中的字符串總是以相同的編碼(UTF-16),你基本上只是改變了內容。您需要設置編碼此字符串中的目的地。如果是標準輸出,則需要設置其編碼。如果它是一個文件,你需要設置其編碼Writer
。如果它是一個HTML頁面,則需要設置響應編碼。如果是數據庫,則需要設置DB /表/連接編碼。等等。
更新:按評論:
的字符串是從一個RSS源是在UTF-8,和我想表明,在使用ISO 8859編碼一個HTML頁面
您需要將HTML頁面的編碼從複雜的ISO 8859編碼升級到現代和世界控制編寫的UTF-8編碼。
更新2:按評論:
Firefox的默認顯示在正確的編碼(UTF-8),但Internet Explorer中的例子並不
然後文字實際上很好。您不需要將字符串轉換爲另一種編碼。這些症狀表明響應頭中缺少字符編碼信息。 Firefox實際上有一個非常聰明的編碼檢測器,而IE在編碼未知時將使用平臺默認編碼。但是,如果HTML在文檔類型和頭部中(劇烈)格式錯誤,IE也會失敗。
因此,或者HTML響應在語法上是無效的,或者未正確設置的應答內容類型。假設您的網站validates和您使用JSP/Servlet的(此處判斷您的帖子後,歷史),您基本上需要將下面的行添加到您的JSP的頂部:
<%@ page pageEncoding="UTF-8" %>
這就是全部。它會自動地設置這兩個響應編碼(使得服務器知道使用寫字符的響應的字節流,其編碼)在Content-Type
響應報頭和編碼(以便客戶端知道使用來讀取其編碼/從響應的字節流中顯示這些字符)。有關更多背景信息,您可能會發現this article有用。
有沒有這樣的事情在Java中的「UTF-8串」 ......也有隻是字符串,它總是以Unicode。 (他們有效總是 UTF-16是。)
你可以有一個字節數組其是ISO-8859-1編碼的字符串的形式(或UTF-8或其他),但它沒有意義具有串與編碼。
如果您已經閱讀與不正確的編碼有一根弦,做正確的事情是解決其內容的字符串,而不是試圖解碼/編碼以後從字符串形式的數據的代碼。
如果您可以提供有關該問題的更多信息,我們可以提供一些更有用的建議。
的字符串是從RSS源是在UTF-8,和我想表明,在使用ISO 8859編碼 – Derk 2010-04-26 15:08:56
@Derk一個HTML頁面:然後,所有你需要做的是確保你閱讀* * RSS提要爲UTF-8。這將獲得正確的數據到字符串中。假設你使用了一個知道HTML編碼的框架,你應該只能寫出數據......雖然顯然有很多字符在ISO-8859-1中沒有涉及。 (你有什麼特別的原因不是寫出來的UTF-8以及在HTML?這將是在一般一個更好的計劃,那麼你就可以覆蓋所有的Unicode字符。) – 2010-04-26 15:14:48
我使用的是將rssutils.jar庫,但我找不到設置源編碼的方法。 – Derk 2010-04-26 15:29:55