2015-02-08 39 views
0

我有一个包含整数值的数组列表。使用Intege将ArrayList转换为UTF-16字符串

看起来像83 0 97 0 109 0 112 0 108 0 101 0

而且我知道它是UTF-16编码。

所以我想将其改造成字符串Sample

目前,当我忽略空值和剩余使用:

String.valueOf(Character.toChars(codePoint)); 

这将导致不正确编码非英文字母。

有谁知道如何将这样的ArrayList转换为正确的UTF-16字符串?

+0

您正在使用BOM – pixel 2015-02-08 19:30:58

+0

这些整数值代表什么? – 2015-02-08 19:34:20

+0

@SotiriosDelimanolis代码点 – pixel 2015-02-08 19:36:08

回答

3
public String fromUTF16LE(int... bytes) { 
    byte[] b = new byte[bytes.length]; 
    for (int i = 0; i < b.length; ++) { 
     b[i] = (byte) bytes[i]; 
    } 
    return new String(b, StandardCharsets.UTF_16LE); 
} 

很明显,整数是字节,以UTF-16的小尾序排列。 有人可能会检查大小是否均匀。 解码器可能用于错误处理。