UTF8编码是广义上unicode实现形式之一。中文字符到utf8编码的一般过程:中文字符->unicode->UTF8。
示例
以中文字符“哈”为例:
1.中文字符“哈”的unicode为“54c8”,对应的二进制表示为“01010100 11001000”
2.unicode怎么转utf8?
Unicode 与 UTF-8 编码有一个归纳的转换规则 :
Unicode Code UTF-8 Code
0000~007F 0xxxxxxx
0080~07FF 110xxxxx 10xxxxxx
0800~FFFF 1110xxxx 10xxxxxx 10xxxxxx
10000~10FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
“54c8”属于区间“0800~FFFF”,那么将“01010100 11001000”填入x,UTF-8编码二进制表示为“11100101 10010011 10001000”,高位自动补零“0”。
3.“11100101 10010011 10001000”十六进制表示为“E5 93 88”。
注:
1.“E5 93 88”是使用十六进制UTF8编码方式来表示数据“哈”,那么用来表示十六进制的字符“E”“5”…“8”都是我们所周知的ascii码。
2.“E”,“5”这两个字符而言,诚然是我们所熟知的ascii码,ascii码说到底是使用指定的7位或者8位的二进制数组合来表示这些字符(26个基本拉丁字母、阿拉伯数目字、英式标点符号空格等)
3. 那么0xE5中的E5是什么?是使用十六进制来表示数据的方式,是数学中逢16进1的进位制[0-9,A-F(10-15)],而且一般都是应用在计算机领域。而说到底用来组成16进制的字符[0-9,A-F]的每一个都是ascii码。
JAVA实现
直接上代码:
String str = "哈";
byte[] bytes = str.getBytes("utf-8");
for (int i = 0; i < bytes.length; i++)
{
System.out.println(Integer.toHexString(bytes[i] & 0xff));
}
或者
String str = "哈";
System.out.println(URLEncoder.encode(str, "utf-8"));
Comments | 0 条评论