我调用了一个Web服务,这使我返回了具有UTF-8编码的响应xml。我使用getAllHeaders()
方法在Java中进行了检查。
现在,在我的Java代码中,我得到该响应,然后对其进行一些处理。然后,将其传递给其他服务。
现在,我在Google上搜索了一下,发现默认情况下Java字符串编码为UTF-16。
在我的响应xml中,其中一个元素具有字符É。现在,这已经搞定了我对其他服务提出的后期处理请求。
它没有发送É,而是发送了一些乱码。现在我想知道,这两种编码真的会有很多区别吗?如果我想知道É将从UTF-8转换为UTF-16,那我该怎么做?
谢谢
最佳答案
UTF-8和UTF-16都是可变长度编码。但是,在UTF-8中,字符可能至少占据8位,而在UTF-16中,字符长度以16位开始。
UTF-8主要优点:
重音等占用一个字节,该字节与US-ASCII相同
表示。这样,所有US-ASCII字符串都变为有效的UTF-8,
在许多情况下提供了良好的向后兼容性。
也引入了很多向后兼容性。
UTF-8主要缺点:
并计算出一个字符串长度。
UTF-16主要优点:
可以用2个字节表示。除非真的是外来人物
需要,这意味着UTF-16的16位子集可以用作
固定长度编码,可加快索引编制速度。
UTF-16主要缺点:
空终止的字符串和大量浪费的内存。
通常,UTF-16通常更适合于内存中表示,而UTF-8非常适合于文本文件和网络协议(protocol)