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

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

时间:2017-08-15 10:10:45      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:ref   string   div   src   .com   存储   分享   知识   jpg   

今天面试被问到“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究竟能存中文吗?

标签:ref   string   div   src   .com   存储   分享   知识   jpg   

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

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