在Android的textview中显示UTF16-LE编码的字符串

问题描述:

我有一个来自服务器的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

假设你有含有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