码迷,mamicode.com
首页 > 编程语言 > 详细

Java中的char 不能存所有的汉字

时间:2020-03-20 18:31:09      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:完整   strong   组成   tle   drag   范围   nbsp   不能   code   

技术图片

 

 ??

但是事实并不是那么简单,Java的char内部编码为UTF-16,请参考String编码(二) 证明JAVA的char编码为UTF-16

Java 的char用两字节存储,表示范围从 ‘\u0000‘ 到 ‘\uffff‘ ,也就是从0到65535。事实上,一个 char不能表示65535个字符,因为只有U+0000 到 U+D7FF 和 U+E000 到U+FFFF能用来表示 一个完整的字符,这些叫做 BMP,另外的作为high surrogate和 low surrogate 拼接组成由4字节表 示的字符。

在UTF-16编码中,大于U+10000码位将被编码为一对16比特长的码元,即按4个字节编码,此时char无法表示。utf16编码格式

所以Java的char只能表示utf­16中的bmp部分字符。对于CJK(中日韩统一表意文字)部分扩展字符集则无法表示。

 例如,下图中除Ext-A部分,char均无法表示。

技术图片

 

Java中的char 不能存所有的汉字

标签:完整   strong   组成   tle   drag   范围   nbsp   不能   code   

原文地址:https://www.cnblogs.com/kakaisgood/p/12533534.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!