我通过处理客户端应用程序发送的请求来获取 UTF8 字符串。但字符串确实是UTF16。我能做些什么来将它放入我的本地字符串中是一个字母,后跟\0
特点?我需要将该字符串转换为 UTF16。
收到的字符串示例:S\0a\0m\0p\0l\0e
(UTF8).
我想要的是:Sample
(UTF16)
FileItem item = (FileItem) iter.next();
String field = "";
String value = "";
if (item.isFormField()) {
try{
value=item.getString();
System.out.println("====" + value);
}
来自服务器的字节是notUTF-8 如果它们看起来像S\0a\0m\0p\0l\0e
。它们是 UTF-16。您可以将 UTF16 字节转换为 JavaString
with:
byte[] bytes = ...
String string = new String(bytes, "UTF-16");
或者你可以使用UTF-16LE
or UTF-16BE
如果您知道来自服务器的字节流的字节序,则将其作为字符集名称。
如果你已经(错误地)构建了一个String
从字节来看,就好像它是 UTF-8 一样,您可以使用以下命令转换为 UTF-16:
string = new String(string.getBytes("UTF-8"), "UTF-16");
然而,正如 JB Nizet 指出的那样,如果字节不是有效的 UTF-8 开头,则此往返(字节 -> UTF-8 字符串 -> 字节)可能会出现损耗。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)