2
我從API
響應中得到String
,我必須在TextView
中顯示。該String
看起來是這樣的:Java字符串不顯示德語變音符號
它應該是「柏靈」,但德國人性格ü
沒有被代表。
問題是我不知道String
是如何在服務器上編碼的。
我試過把它轉換成UTF-8
,windows-1252
和ISO-8859-1
在所有可能的組合中沒有成功。
我也看到了這篇大文章:
這裏是一些我已經試過鏈接:
How do I convert between ISO-8859-1 and UTF-8 in Java?
Java convert Windows-1252 to UTF-8, some letters are wrong
有沒有人有想法?
謝謝。
編輯:
我找到了原因。解析來自API的響應,我只是說這個:
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(), Charset.forName("ISO-8859-15")));
之前,它是這樣的:
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
現在ü
字符正確顯示。
非常感謝所有的評論,它使我在正確的方向上進行研究。
我們不知道如何從服務器獲取數據 - 這是重要的部分之一。請給更多的上下文。 –
'我從API響應中獲得一個字符串'這就是問題所在。該API很可能使用默認的Windows編碼:CP1252。相反,您需要將值作爲UTF-8正確返回。 –
如果HTTP頭中沒有信息,您是否嘗試[chardet](http://chardet.readthedocs.io/en/latest/usage.html)? – pskink