【发布时间】:2012-08-24 01:05:55
【问题描述】:
我有一个正在处理的 Blackberry 项目,我需要将使用 UTF-16LE(小端)编码的字符串字节数组转换为 UTF-16BE(大端)编码的字符串字节数组,并且可见。反之亦然。我正在连接的服务器正在以 UTF-16LE 编码发送 BlackBerry 设备字节字符串数组,但该设备本身并不支持 UTF-16LE。当我尝试将字节数组解码回字符串时,字符串难以辨认。但是,该设备确实支持 UTF-16BE。我还需要反转这个过程,即将具有 UTF-16BE 编码的字符串的字节数组转换为服务器所期望的 (UTF-16LE)。谢谢。
我无法在设备上执行此操作:
String test = "test";
byte[] testBytes = test.getBytes("UTF-16LE");// throws UnsupportedEncodingException
我可以这样做:
String test = "test";
byte[] testBytes = test.getBytes("UTF-16BE");//works
【问题讨论】:
-
如果你只使用
byte[] testBytes = test.getBytes("UTF-16"),你会得到什么?您的服务器是否将正确的 BOM 字符放在字符串的开头,并且 Blackberry 是否会自动检测大端? -
@HeatfanJohn test.getBytes("UTF-16") 也会引发异常。我不确定服务器是否将 BOM 放在字符串的开头。它是一个 ASP.Net ADFS 服务器(如果有帮助的话)。黑莓不会自动检测。谢谢。
标签: blackberry unicode java-me