首页 > 编程语言 > 详细

Java中的char究竟能存中文吗?

时间:2017-08-15 09:36:17      阅读:212      评论:0      收藏:0      [点我收藏+]

今天面试被问到“Java中的char能存中文吗?”,我回答有的字能有的字不能,结果被嘲笑了,不过我也忘了字符编码的相关知识所以也没能解释。晚上查了下资料,记录一下。

网上搜索这个问题,答案清一色都是能,毕竟随便写行代码都能清晰地证明可以:

char c = ‘我‘;

但是事实并不是那么简单,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字节表 示的字符。

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

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

技术分享

 

Java中的char究竟能存中文吗?

原文:http://www.cnblogs.com/hephae/p/7361874.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!