关于String.getBytes()的一些疑问

xingqiliudehuanghun 2009-03-26 02:51:07
前几天看到一帖子,lz想要实现将010101这样的字符串翻译成byte然后再转换成相应编码的字符串
写了一下只能在utf-8编码下实现,不是很理想。今天又写了一写在进行测试的时候发下了个问题

byte[] g=new String("我是谁a").getBytes(); //占用7字节
byte[] f=new String("我是谁a").getBytes("gbk"); //占用7字节结果同上
byte[] d=new String("我是谁a").getBytes("utf-8"); //占用10字节
原本以为java中的字符采用unicode编码,所以每个字符翻译成byte应该都占用2个字节。
可是确不是我想象的那样,翻译成字节后英文还是只占用一个字节,中文在gbk编码下占2字节,
utf-8下占3字节。谁能解释下getBytes的转换原理?翻译成byte后如何判断一个字符是中文
还是英文?一般这样的翻译程序是怎么处理的
...全文
271 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sunny_kaka 2009-03-26
  • 打赏
  • 举报
回复
UTF-8 的格式在编码英文时,只需要8位,但是中文则是24位,其他更加偏僻的字符才又可能是32位

http://www.blogjava.net/ramon/archive/2006/09/24/71505.html
hoojo 2009-03-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 mumu_java 的回复:]
呵呵,一般既有中文又有e文,都是按宽度最大的转,就是都转成utf-8,这样虽然浪费一些空间,但是可以每三个字符一个字符,不管是中文还是e文.
[/Quote]
各个编码 占用字节不同
dsgdsg 2009-03-26
  • 打赏
  • 举报
回复
gbk 2字节编码
UTF8 3字节编码!
mumu_java 2009-03-26
  • 打赏
  • 举报
回复
呵呵,一般既有中文又有e文,都是按宽度最大的转,就是都转成utf-8,这样虽然浪费一些空间,但是可以每三个字符一个字符,不管是中文还是e文.

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧