手动转Java字符串类型(char)为UTF-8格式
说实话我还想介绍下什么是unicode和utf-8,但是每次的介绍文总是会跑题然后越写越长,然后没填完丢弃在草稿箱…这次就只讲方式不介绍了。
unicode通常以十六进制显示在各地,
(差一个介绍十六进制的坑)
如“好”字以unicode显示: 597d
十六进制是二进制的缩写形式,于是我们也可以将十六进制还原回二进制:(差一个介绍十六进制转二进制的坑) 0101 1001 0111 1101
再来看一下UTF-8的码表 1 byte 0xxxxxxx 编号0~127(2^8 - 1)
2 byte 110xxxxx 10xxxxxx 编号~2047(2^11 - 1)
3 byte 1110xxxx 10xxxxxx 10xxxxxx 编号~65535(2^16 - 1)
4 byte 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx ...
我们要做的是将二进制的数字,从右往左填入一个长度足够的utf8码表中,很明显3byte长度的码表就足够了,这也是为什么汉字unicode转utf8时,会从2字节变为3字节。
填好:(一个怎么用代码填进去的坑)
0101 1001 0111 1101
xxxx0101 xx1001 01 xx11 1101
1110xxxx 10xxxxxx 10xxxxxx
11100101 10100101 10111101
然后将上面每个字节byte转为10进制,在代码中强转为byte并放入同一个数组,再利用String的重构方法传入byte数组和指定的字符集名,就能得到对应的字符串,输出后就能验证~
byte[] b = {(byte)229,(byte)165,(byte)189};
String str = new String(b,"utf-8");
System.out.println(str);
上一篇: Android 获取图片尺寸大小的方法
下一篇: jquery 获取图片真实大小的两种方法