一个编码的问题

沁海棠 2019-01-01 12:33:47
UTF-8编码汉字占3位4位,拼音数字占一位, 那如何汉字和字符数字混在一块,是如何进行解码的、

        
byte[] bytes = "测试a测试".getBytes("utf-8");
System.out.println(bytes.length);
String s1 = new String(bytes,"utf-8");
System.out.println(s1);


获取的字节数组长度为13,这个4个汉字一个占用3个。

问题就是一整串字节,它怎么知道第7个是字母占一个字节?

111001101011010110001011-->e6b58b-->测
111010001010111110010101-->e8af95-->试
1100001-->61-->a (当然如果前面都补0占三个字节还是可以的,但它就占了一个字节啊)

不明白。是哪里想错了。。。
...全文
76 点赞 收藏 3
写回复
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
沁海棠 2019-01-01
引用 1 楼 rumlee的回复:
0开头的1个字节表示一个字符, 0xxxxxxx 110开头2个字节表示一个字符 110xxxxx 10xxxxxx 1110开头3个字节表示一个字符 1110xxxx 10xxxxxx 10xxxxxx 参考:https://www.cnblogs.com/xinruzhishui/p/5763894.html
原来是这样
回复
十八道胡同 2019-01-01
引用 1 楼 rumlee 的回复:
0开头的1个字节表示一个字符,
0xxxxxxx

110开头2个字节表示一个字符
110xxxxx 10xxxxxx

1110开头3个字节表示一个字符
1110xxxx 10xxxxxx 10xxxxxx

参考:https://www.cnblogs.com/xinruzhishui/p/5763894.html


学习了
回复
rumlee 2019-01-01
0开头的1个字节表示一个字符, 0xxxxxxx 110开头2个字节表示一个字符 110xxxxx 10xxxxxx 1110开头3个字节表示一个字符 1110xxxx 10xxxxxx 10xxxxxx 参考:https://www.cnblogs.com/xinruzhishui/p/5763894.html
回复
发动态
发帖子
Java EE
创建于2007-09-28

6.6w+

社区成员

J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
申请成为版主
社区公告
暂无公告