2017-09-22 78 views
0

我已经在javascript中将UTF 16转换为UTF 8(使用方法:toUTF8Array)代码并将代码从ajax调用(注:UTF 16个字符是丑陋的,它需要哪些我不想编码!) JS代码:将UTF 8字符串代码转换为UTF 16字符串(实际UTF 16字符)

var compressed = LZString.compressToUTF16(uncompressed64Data); 
var utf8values = toUTF8Array(compressed); 
    jQuery.ajax({ 
data :"img=+" utf8values 
} 

我已经收到了UTF在Java服务器端8码如下:

String utf8values = request.getParameter("img"); 

fyi,sop的结果: utf8values:225,186,162,227,160,181,229 ,160,165

现在我想将代码更改为实际的UTF 16字符串?

在此先感谢!

+0

是' “225,186,162,227,160,181,229,160,165”'实际的字符串你有吗? – Oleg

+0

是的。这是我给出的样本 –

+0

所以它应该是'Ả㠵堥'? – Oleg

回答

1

下面应该工作:

String[] split = "225,186,162,227,160,181,229,160,165".split(","); 
ByteBuffer bb = ByteBuffer.allocate(split.length); 
Arrays.stream(split).forEach(a -> bb.put((byte)Integer.parseInt(a))); 
bb.flip(); 
String string = Charset.forName("UTF-8").decode(bb).toString(); 
+0

优秀的答案。如果你能够提取这个Java 1.7,我会更高兴。谢谢 –

+1

@WillMcavoy我只是用它来简洁,用循环替换'forEach'就足够简单了。 – Oleg