文章目录
- Unicode与网络传输
- Unicode
- 网络传输
UTF:Unicode Transformation Format
UTF-8是在网络上传输Unicode的一个转换标准,发送时将字符串Unicode转为UTF-8,接收时将字节转为Unicode,就完成来字符串的传输
Unicode与网络传输
Unicode
点击此链接进入Unicode查询网站
示例:
public class UnicodeDemo01 {
public static void main(String[] args) {
/**
* Unicode编码
* java 字符存储的是一个符号的Unicode编码
* 可以显示为10进制或16进制的形式
* java 的字符范围是0~65534
*
*/
char c1 = 'a';
char c2 = '好';
char c3 = 'Ô';//U+00D4 Ô
char c4 = '¾';//U+00BE ¾
System.out.println((int)c1);
System.out.println((int)c2);
System.out.println((int)c3);
System.out.println((int)c4);
}
}
网络传输
- 无论是TCP还是UDP协议,它们都以byte作为数据传输单元
- 任何需要传输的数据都必须拆分为byte进行传输
- 每个byte是0~255之间的数字
使用UTF-8传输数字时把汉字使用三字节模板来进行传输
UTF-8 到底是什么意思?unicode编码简介
在使用UTF-8转换传输Unicode时要先进行UTF-8进行编码传输,接收时进行UTF-8解码就可以传输数据了。
public class Utf8Demo {
public static void main(String[] args) {
/**
* 测试UTF-8编码API
*/
String str = "Java β 表达式";
//将字符串中的文字进行UTF-8编码
///str.getBytes(StandardCharsets.UTF_8) 也可以写成 str.getBytes("UTF-8”)
// 经过qetButes方法的转换得到了 UTF-8 编码的字节数组
byte[] bytes = str.getBytes(StandardCharsets.UTF_8);
//bytes就可以利用网络进行传输
//将字节数组中的UTF-8编码的字符进行解码
//new String(bytes, "UTF-8");
String s= new String(bytes, StandardCharsets.UTF_8);
System.out.println(s);
/*
* 输出字符串中每个字符的Unicode
*/
System.out.println("Unicode....");
for (int i=0; i<str.length(); i++){
char c = str.charAt(i);
System.out.print(c);
System.out.print(":");
System.out.println(Integer.toBinaryString(c));//输出每个字符的二进制编码
}
System.out.println("UTF-8....");
for (byte b:bytes){
System.out.println(Integer.toBinaryString(b & 0xff));///这里用一个与运算,用于去除高位上的1,(可以不写&0xff看看输出结果)
}
}
}