2017-09-22 106 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