byte[] ucs2_bytes = ......;
String ucs2_str = new String(ucs2_bytes, "ucs2");

解决方案 »

  1.   

    这样不行,转出来的全是??号。原来字符串文字有数字也有中英文,转成PUD码是用ISO-10646-UCS-2,但现在从手机里读出的信息如下:0891683108705505F00409A170552290F90008409031712483008875374EBA670959169047768456DB4E2A680751C6FF1A624B673A56DE5BB65C315173FF1B77ED4FE1770B5B8C5C315220FF1B60F377E59053540E4E244E2A5417FF1F5FEB53D10038523000300039003700390038FF0C54C854C896C691CC67097B546848300253054F607B1163895C0F7259FF015BA2670D00380033003500320039003300350030
    如何将它还原?谢谢!
      

  2.   

    当时回贴没有验证 ucs2 全名
    String ucs2_str = new String(ucs2_bytes, "ucs2");
    "ucs2" 代表字符集名称
    你只需要替换成字符集的正式名称即可
    如: String ucs2_str = new String(ucs2_bytes, "ISO-10646-UCS-2");
    如果还是乱码说明你的编码字符集非 ucs2
    Java 支持的字符集可以参照 Charset 类文档
    http://java.sun.com/j2se/1.4.2/docs/api/java/nio/charset/Charset.html