一个编码的问题

沁海棠 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占三个字节还是可以的,但它就占了一个字节啊)

不明白。是哪里想错了。。。
...全文
142 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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