彻底搞懂: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到底是啥关系?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangjin1120

可靠的文章费时费力,希望支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值