在Android的textview中显示UTF16-LE编码的字符串
问题描述:
我有一个来自服务器的UTF-16LE编码字符串。我想在我的活动的Textview中打印该字符串。但是,字符串会在它们之间打印空格。所以,“你好”打印为“H l l o o”,在我的屏幕中看起来并不好看。在Android的textview中显示UTF16-LE编码的字符串
任何帮助表示赞赏。
由于
答
假设你有含有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
你是如何收到它的?只需将一个UTF-16LE字节流转储到字符串中就可以获得您所看到的输出。 – Jens 2012-02-07 09:01:26
是的,这就是我正在做的。我将如何转换它? – Gentoo 2012-02-07 13:49:14