java – UTF-8和UTF-16之间是否存在巨大差异

前端之家收集整理的这篇文章主要介绍了java – UTF-8和UTF-16之间是否存在巨大差异前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
调用了一个webservice,它给了我一个具有UTF-8编码的响应xml.我在 java中使用getAllHeaders()方法检查了它.

现在,在我的java代码中,我接受了该响应,然后对其进行了一些处理.然后,将其传递给其他服务.

现在,我用google搜索了一下,发现默认情况下,Java中字符串的编码是UTF-16.

在我的响应xml中,其中一个元素有一个字符É.现在这搞砸了我对其他服务的后处理请求.

它没有发送É,而是发送了一些乱七八糟的东西.现在我想知道,这两种编码真的会有很大不同吗?如果我想知道什么将从UTF-8转换为UTF-16,那么我该怎么做呢?

谢谢

解决方法

UTF-8和UTF-16都是可变长度编码.但是,在UTF-8中,字符可能占用最少8位,而在UTF-16中,字符长度以16位开始.

主要UTF-8专业人士:

>基本ASCII字符,如数字,拉丁字符,否
重音等占用一个与US-ASCII相同的字节
表示.这样所有US-ASCII字符串都变为有效的UTF-8,
在许多情况下,它提供了良好的向后兼容性.
>没有空字节,允许使用以空字符结尾的字符串,这个
也引入了大量的向后兼容性.

主要UTF-8缺点:

>许多常见字符的长度不同,这会减慢索引速度
并严重计算字符串长度.

主要UTF-16专业人士:

>最合理的角色,如拉丁文,西里尔文,中文,日文
可以用2个字节表示.除非真正异国情调的人物
需要,这意味着UTF-16的16位子集可以用作a
固定长度编码,可加快索引速度.

主要UTF-16缺点:

> US-ASCII字符串中有很多空字节,这意味着没有
以null结尾的字符串和大量浪费的内存.

通常,UTF-16通常更适合内存中表示,而UTF-8非常适合文本文件和网络协议

猜你在找的Java相关文章