2012-02-07 100 views
1

我有一個來自服務器的UTF-16LE編碼字符串。我想在我的活動的Textview中打印該字符串。但是,字符串會在它們之間打印空格。所以,「你好」打印爲「H l l o o」,在我的屏幕中看起來並不好看。在Android的textview中顯示UTF16-LE編碼的字符串

任何幫助表示讚賞。

由於

+0

你是如何收到它的?只需將一個UTF-16LE字節流轉儲到字符串中就可以獲得您所看到的輸出。 – Jens 2012-02-07 09:01:26

+0

是的,這就是我正在做的。我將如何轉換它? – Gentoo 2012-02-07 13:49:14

回答

4

假設你有含有UTF-16LE編碼的字符串流(或byte列數組)。

String str0 = "Hello, I am a UTF-16LE encoded String"; 
byte[] utf16le = str.getBytes("UTF-16LE"); 

如果你不把這些轉換回&說明使用你會產生含大量的0字節的字符串的字符集(UTF-16LE是,很明顯,16位),在您的結果字符串。

String wrong = new String(utf16le); // This will produce crap with \0:s in it. 
String correct = new String(utf16le, "UTF-16LE"); // This will be the actual string. 

:如果你傾倒垃圾字符串:就像這些成一個TextView在ICS它會刪除你的垃圾和不打印「HéL L o」的。

+0

工作正常!謝謝一堆。 – Gentoo 2012-02-07 18:34:35

相關問題