在了解字符编码时, 扩展了解到
转义字符
\x 表示ASCII编码
\u 表示Unicode编码
数字前缀, java语言
0开头, 默认是八进制
0x开头, 16进制
0b开头, 二进制
正则
\d 表示整数
===========
UTF-8 编码与 MySQL 中的 utf8、utf8mb4 - beihai blog
UTF-8 是变长字节编码方式。对于某一个字符的 UTF-8 编码,如果只有一个字节则其最高二进制位为 0;如果是多字节,其第一个字节从最高位开始,连续的二进制位值为 1 的个数决定了其编码的位数,其余各字节均以10开头。UTF-8 在设计上最多可用到6个字节。
个人理解: 不同的字节长度表示的范围不同
为了快速区分是几字节
首字节根据0出现的最高位来判断;
多字节的:
首字节, 最高位有几个1, 就是几字节长度, 剩下的是有效位
后面的字节,都是10开头, 剩下的是有效位
===========
Unihan data for U+6708
"月"字
UTF-8编码
十六进制: E6 9C 88
二进制: 1110 0110 1001 1100 1000 1000
E 6 9 C 8 8
根本编码规则找到 3字节的格式: 1110xxxx 10xxxxxx 10xxxxxx
根据格式提取 Unicode有效值, 0110011100001000
为了方便观察, 手动分割 , 得到: 0110,0111, 0000,1000
转16进制 6,7,0,8
最终的16进制表现形式: 0x6708
得到Unicode的表示: U+6708, \u6708
字节数 | UTF-8 编码 |
---|---|
1字节 | 0xxxxxxx |
2字节 | 110xxxxx 10xxxxxx |
3字节 | 1110xxxx 10xxxxxx 10xxxxxx |
4字节 | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx |
5字节 | 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx |
6字节 | 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx |
UNICODE 与 UTF-8 转换
Unicode 符号范围(十六进制) | UTF-8 编码方式(二进制) |
---|---|
0000 0000-0000 007F | 0xxxxxxx |
0000 0080-0000 07FF | 110xxxxx 10xxxxxx |
0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx |
0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx |
========
正则表达式 - 匹配 Unicode 和其他字符_wzy0623的博客-CSDN博客
========
查看字符编码(UTF-8)
Unicode - 云设工具
11l月❤ 在idea中 使用表达式: [\ud83d-\ud83e\ud000-\udfff] 上面的emoji能够被匹配到