UTF-8可以保存UTF-16可以容纳的相同数据

时间:2015-03-02 12:30:15

标签: java encoding utf-8 character-encoding utf-16

使用Java我将多语言文本保存为UTF-16格式的文件。为了节省磁盘空间,我想切换到使用UTF-8 UTF-8可以表达与UTF-16相同的字符集范围吗?

这将允许我避免在不同的人类语言中进行回归或广泛测试。 我的大部分内容都是英文的,所以我希望节省磁盘空间。

2 个答案:

答案 0 :(得分:2)

是的,它可以。 UTF-8UTF-16只是将Unicode字符转换为字节的不同方法,反之亦然。

两种编码都可以编码所有可能的Unicode字符。

来自链接(维基百科):

  

UTF-8 (U来自通用字符集+转换格式-8位)是一种能够编码Unicode中所有可能字符(称为代码点)的字符编码。 ... UTF-8使用一到四个8位字节对一个Unicode代码空间中的1,112,064个有效代码点(1,114,112个代码点减去2,048个代理代码点)进行编码(一组8位称为八位字节) Unicode标准)。

     

UTF-16 (16位Unicode转换格式)是一种能够以Unicode编码所有1,112,064个可能字符的字符编码。

答案 1 :(得分:1)

UTF-8和UTF-16可以代表所有有效的Unicode代码点。

UTF-8也可以表示无效的UTF-16序列(轻松验证) 反过来不成立。