栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java char双字节如何存储Unicode字符

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java char双字节如何存储Unicode字符

计算机世界,都是二进制组成。最早期,美国出了ascii码标准,只需要1个字节,最多表示128个字符,支持了英语的字符集。全世界这么多国家,这么多种语言,肯定不够。欧洲出了iso编码标准,咱们中国出了gbk,支持中文。
编码混乱,自然就要做统一编码标准。所以诞生了Unicode编码,它目标是给全世界所有符号都编码,都有一个唯一的编码。也名万国码,单一码。它总共有三个字节,第一个字节表示平面,设计了17个平面。后两个字节,是实际数据。两个字节,最多表示65536个字符。17个平面,就是最多能表达1百多万个字符。满足全世界的字符需要了。
第一个平面,名BMP,是包含社会中常见的字符。
所以UCS-2编码,2个字节,就是代表了BMP的字符集。

然而,Unicode编码并不是一个实际在使用的编码方式。我们看到的,是utf-8,utf-16等。
utf和Unicode,有什么关系?都有个u,对了,u就是指Unicode。
utf ——Unicode transformation format。万国码转换格式
为啥不使用Unicode,原因是固定三个字节。而utf-8,utf-16,都是属于可变长编码,可兼容ascii码。
英语目前还是国际流行语言,大多数符号,只需要一个字节就能表示了,Unicode固定3个字节,就有相当大的浪费。对于BMP字符集,utf-8采用3字节表示汉字,utf-16会采用两个字节。

好了,至此,用了这么久的java。我们都知道,char是两个字节的。那char如何存储中文,或者更多字节的字符。

java会区别外码和内码。
外码,是指源代码还有class文件等,编码采用utf-8,汉字自然就是3个字节。
内码,指运行内存中的编码。也就是实际上char里面存储的字节数据。是用utf-16编码的。汉字是两个字节

对于所有的Unicode编码,utf-16,会有1-6个字节进行表示。那么jvm会使用1-3个char来组成表示。
使用byte[]转String,需要指定编码。

参考文章
Unicode介绍

这篇文章写的好齐全

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/425594.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号