广义的 Unicode 是一个标准,定义了一个字符集以及一系列的编码规则,即 Unicode 字符集和 UTF-8、UTF-16、UTF-32 等等编码规则。 Unicode 是字符集。UTF-8 是编码规则。 unicode 虽然统一了全世界字符的二进制编码,但没有规定如何存储。 如果 Unicode 统一规定,每个符号就要用三个或四个字节表示,因为字符太多,只能用这么多字节才能表示完全。 一旦这么规定,那么每个英文字母前都必然有二到三个字节是 0,因为所有英文字母在 ASCII 中都有,都可以用一个字节表示,剩余字节位置就要补充 0。 如果这样,文本文件的大小会因此大出二三倍,这对于存储来说是极大的浪费。这样导致一个后果:出现了 Unicode 的多种存储方式。 UTF-8 就是 Unicode 的一个使用方式,通过他的英文名 Unicode Tranformation Format 就可以知道。 UTF-8 使用可变长度字节来储存 Unicode 字符,例如 ASCII 字母继续使用 1 字节储存,重音文字、希腊字母或西里尔字母等使用 2 字节来储存,而常用的汉字就要使用 3 字节。辅助平面字符则使用 4 字节。 一般情况下,同一个地区只会出现一种文字类型,比如中文地区一般很少出现韩文,日文等。所以使用这种编码方式可以大大节省空间。比如纯英文网站就要比纯中文网站占用的存储小一些。 资料来源:《Java工程师成神之路(基础篇)》 链接:https://developer.aliyun.com/topic/download?id=923
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。