黑马程序员技术交流社区
标题:
{学习总结}汉字到底占几个字节byte
[打印本页]
作者:
迷茫小王
时间:
2014-10-15 11:03
标题:
{学习总结}汉字到底占几个字节byte
本帖最后由 迷茫小王 于 2014-10-15 11:03 编辑
前几天做自测题遇到了一个问题,题目如下:
编写函数,从一个字符串中按字节数截取一部分,但不能截取出半个中文(GBK码表),例如:从“HM程序员”中截取2个字节是“HM”,截取4个则是“HM程”,截取3个字节也要是"HM"而不要出现半个中文。
我在做的过程中遇到了一个问题,同一行代码在不同的操作系统下得出的结果不一致。 //我平常用macbook学习,但是女朋友下班后要用macbook看电视剧,我只能用她的windows继续编程...大家勿喷。
例如在Java代码中定义一个字符串:String s="HM程序员";
在windows操作系统下调用 s.getByte().length时,结果为8。但是在Mac OS下调用,结果为11!
其原因究竟为何:不管在编译前java文件使用何种编码,在编译后成class后,他们都是一样的----Unicode编码表示。
但是当调用s.getByte()的时候,此方法使用平台默认的字符集来获取字符串对应的字节数组。
windows平台默认采用GBK编码,而MAC OS默认采用UTF-8编码,
那么这时问题就来了
,到底一个汉字在不同的编码方式中占几个字节呢?
总结如下:
GBK编码下,一个汉字占2个字节;
UTF-8编码下,一个汉字占3个字节
UTF-8是一种国际通用的一种变长编码,ASCII对应的字符在UTF-8下占1个字符,西方文字(希腊文字)占2个字符,中文占用3个字节数,还有平面符号占4个字节
作者:
在学野马
时间:
2014-10-15 11:35
分享下代码吧
作者:
康师傅-蛋黄派
时间:
2014-10-15 12:10
应该是两个字节吧,我记得毕老师视频说可以存在字符里的
作者:
迷茫小王
时间:
2014-10-15 12:49
康师傅-蛋黄派 发表于 2014-10-15 12:10
应该是两个字节吧,我记得毕老师视频说可以存在字符里的
GBK编码下,一个汉字占2个字节;
UTF-8编码下,一个汉字占3个字节
作者:
迷茫小王
时间:
2014-10-15 12:52
在学野马 发表于 2014-10-15 11:35
分享下代码吧
public class HanZi
{
public static void main(String[] args)
{
String s = "HM程序员";
int l = s.getByte().length;
System.out.println(l);
}
}
作者:
刘树弘
时间:
2014-10-15 13:18
没明白楼主到底在问什么,另外 int l = s.getBytes().length;才能运行。
作者:
zd12345
时间:
2014-10-15 14:10
汉字占用两个字节
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2