回答
您正在使用byte[] b = "Üü?öäABC".getBytes("ISO-8859-15");
對ISO-8859-15進行編碼,然後用UTF-8 System.out.println(new String(b, "UTF-8"));
對其進行解碼。您必須使用ISO-8859-15進行相同的解碼。
我也用ISO-8859-15解碼。 – pradeep 2013-02-22 08:18:58
嗯,是的,工作的那條線是正確的'System.out。println(new String(b,「ISO-8859-15」));'。它使用ISO-8859-15解碼器解碼ISO-8859-15編碼的字符串。另一行用UTF-8解碼ISO-8859-15編碼的字符串。當然,它不會工作。 – jdb 2013-02-22 08:22:07
將x作爲x進行編碼並將其解碼爲x完全沒有意義。它不會做任何事情,最好的情況是它會失去更多的信息。 – Esailija 2013-02-22 08:46:40
您正在嘗試以 「ISO-8859-15」 編碼的ByteArray以 「UTF-8」 格式
b = "Üü?öäABC".getBytes("ISO-8859-15");
u = "Üü?öäABC".getBytes("UTF-8");
System.out.println(new String(b, "ISO-8859-15")); // will be ok
System.out.println(new String(b, "UTF-8")); // will look garbled
System.out.println(new String(u,"UTF-8")); // will be ok
這不是 「UTF-8」,但完全斷裂和不可修復數據進行解碼。字符串沒有編碼。在這種情況下說「UTF-8」字符串是沒有意義的。字符串是一個抽象字符的字符串 - 它沒有任何編碼,除非作爲內部實現細節,這不是我們所關心的並且與您的問題無關。
這是不正確的。字符串**總是**有編碼。即使在內存中,*邏輯*字符也必須*物理*編碼。 Java字符串在內存中使用UTF-16。如果您有一個包含UTF-16編碼的UTF-8八位字節的字符串,那麼您可以將字符值原樣複製到Byte數組,然後使用String構造函數將它們解碼爲正常的UTF-16編碼字符串,字節數組和編碼作爲輸入。 – 2013-02-22 18:38:20
@RemyLebeau我想你只讀了我的答案的第一句話。除了處理星體飛機時,內部編碼是無關緊要的 - 在這種情況下,UTF-16的選擇泄露給用戶。存儲二進制數據的數據類型(例如編碼文本)是byte [],而不是String。 – Esailija 2013-02-22 19:53:01
java中的字符串已經是unicode表示。當你調用其中一個getBytes方法時,你會得到一個編碼表示(作爲字節,因此二進制值)在特定的編碼 - 在你的例子ISO-8859-15。如果你想把這個字節數組轉換回一個unicode字符串,你可以用一個字符串構造函數來接受一個字節數組,就像你做的那樣,但是你必須使用完全相同的編碼字節數組最初生成的用。只有這樣你才能將它轉換回一個unicode字符串(它沒有編碼,並且不需要)。
要小心無編碼方法,字符串構造函數和getBytes方法,因爲它們使用運行代碼的平臺的默認編碼,這可能不是您想要實現的。
我認爲這裏的問題是,你假設一個java字符串編碼與你在構造函數中指定的任何東西。 不是。它是UTF-16。
因此,"Üü?öäABC".getBytes("ISO-8859-15")
實際上是將UTF-16字符串轉換爲ISO-8859-15,然後獲取該字節的表示形式。
如果您希望在Eclipse控制檯中獲得人類可讀的格式,請保持原樣(UTF-16) - 並調用System.out.println("Üü?öäABC")
,因爲您的Eclipse控制檯將解碼字符串並將其顯示爲UTF- 16。
- 1. 將字節[]轉換爲UTF8字符串
- 2. 可以將所有字符集編碼字符串轉換爲utf8
- 3. C#:將byte []轉換爲UTF8編碼的字符串
- 4. 將url編碼的字符串轉換爲python unicode字符串
- 5. 如何將utf8字符串轉換爲ascii字符串?
- 6. 如何將字符串轉換爲UTF8?
- 7. 將latin1字符串轉換爲utf8?
- 8. 將unicode字符串轉換爲utf8
- 9. 將字符串轉換爲UTF8
- 10. 將UTF8字符串編碼爲ISO-8859-1字符串(VB.NET)
- 11. 將PHP json編碼的UTF8字符串轉換爲普通字符
- 12. 將utf8代碼點字符串轉換爲utf8 <U+0161>轉換爲utf8
- 13. 將.net字符串對象轉換爲base64編碼字符串
- 14. 將字符串轉換爲UCS2編碼
- 15. 轉換爲UTF8格式的字符串
- 16. 編碼字符串UTF8
- 17. 將字符串轉換爲字符串
- 18. PHP的json_encode轉換UTF8字符串的字符代碼
- 19. 爲什麼xmltextreader會自動將html編碼的utf8字符轉換爲utf8字符串?
- 20. 轉換JSON字符串UTF8爲NSDictionary Swift
- 21. Unicode轉換爲UTF8字符串
- 22. 更改字符串編碼WIN1250爲utf8
- 23. 如何將字符串的字符串轉換爲字符?
- 24. 如何將字符串從編碼轉換爲字符?
- 25. Java的轉換字符流爲人類的「可讀」字符串
- 26. 如何字節串轉換爲可讀的字符串
- 27. 將字符串轉換爲字符
- 28. 將字符串轉換爲字符
- 29. 將字符串轉換爲字符
- 30. 將char字符串轉換爲字符
你想達到什麼目的?弦從哪裏來? – 2013-02-22 08:13:27
我只是想將不可讀的UTF8格式的字符串轉換爲可重用的字符串(ASCII或其他可讀的字符集)。 – pradeep 2013-02-22 08:16:20
我從其他問題' – pradeep 2013-02-22 08:16:41