知方号

知方号

彻底搞懂:java中的char能表示中文吗?

彻底搞懂:java中的char能表示中文吗?

java中的char能表示中文吗?

可以表示。

C语言中,char只占1个字节,也就是8位,就只能最多表示2的8次方个字符,也就是256个。其中,0-127表示ASCII字符,ASCII表中一共128个字符。剩余128个,表示中文显然不够的。所以C语言中char不能表示中文。

Java中,char采用unicode存储,unicode编码字符集中包含中文。java内部其实是使用的UTF-16的编码,所以是支持大部分非生僻汉字的;采用Unicode字符集,一个char占用两个字节,而一个中文字符也是两个字节,因此Java中的char是可以表示一个中文字符的。

两个字节表示汉字,够用吗?

常用的汉字不到1万。GB2312中只收录了6763个汉字,就差不多够用了。

什么是BMP?

Basic Multilingual Plane 基本多语言平面。它的码点范围是即0x0000-0xFFFF,包含了世界上最常用的字符。

字符集有哪些?java为什么要采用unicode?

字符集有ASCII,OEM,GB2312,GBK,GB18030,ISO-8859-1,Unicode。

ASCII 只能表示128个字符OEM 只能表示256个字符,且实现版本众多,不统一。ISO-8859-1 ,也称为Latin-1,是一种单字节字符集,只能表示256个字符。包括拉丁字母、数字、标点符号和其他常见的字符,以及一些特殊符号。ISO 8859-1主要用于西欧国家的语言,如英语、法语、德语等。它也被广泛用于网页制作和电子邮件等文本传输中。GB2312 最早一版的中文字符集,一个汉字占两个字节,也就是16位。由于要和ASCII兼容,那这2bytes最高位不可以为0了(否则和ASCII会有冲突)。在GB2312中收录了6763个汉字以及682个特殊符号,已经囊括了生活中最常用的所有汉字。GBK是双字节字符集,兼容GB2312和ASCII,可以表示的汉字达到了20902个,包含繁体字,另有984个汉语标点符号、部首等。GB18030 对比GBK,多出来的汉字使用4bytes编码。在GB18030-2005版当中,已经包含70244个汉字,包含少数民族文字。GB18030支持Unicode。

Unicode字符集涵盖了目前人类使用的所有字符,并为每个字符进行统一编号,分配唯一的字符码(Code Point)。Unicode字符集将所有字符按照使用上的频繁度划分为17个层面(Plane),每个层面上有2^16=65536个字符码空间。其中第0个层面BMP,基本涵盖了当今世界用到的所有字符。其他的层面要么是用来表示一些远古时期的文字,要么是留作扩展。我们平常用到的Unicode字符,一般都是位于BMP层面上的。目前Unicode字符集中尚有大量字符空间未使用。

Java为什么选择unicode字符集?字符编码的那些事 iso8859-1和gbk 一图弄懂ASCII、GB2312、GBK、GB18030编码

怎么知道java采用的是unicode编码字符集?

官网: https://www.oracle.com/technical-resources/articles/javase/supplementary.html https://stackoverflow.com/questions/2533097/java-unicode-encoding

Unicode与UTF-16是什么关系?

Unicode本质上是一套标准,而UTF-32,UTF-16,UTF-8是Unicode的三种不同实现方式。 Unicode,UTF-32,UTF-16,UTF-8到底是啥关系?

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。