正则表达式——Unicode
第 7 章 Unicode
7.1 关于编码
通常,英文编码较为统一,都采用ASCII编码或可以兼容ASCII编码(即编码表的前127位与ASCII编码一直,常见的各种编码,包括Unicode编码都是如此)。也就是说,稳赢字母、阿拉伯数字、稳赢的各种符号,在不同编码下的码值(Code Point)基本是一样的,比如字母A
,起码值总是41;中文的情况则不同,常见的中文编码有GB18030(也就是CP54936,主要是在Windows平台下使用。早期是GBK,也就是CP936,如今采用的GB18030与GBK是兼容的,考虑到大家习惯说“GBK编码”,下文也采用“GBK编码”的说法)和Unicode(主要用于Linux/UNIX、Mac OS)两种,同一个中文字符在两种编码下的码值并不相同。比如“发”,在GBK编码下的码值为b7a2,而在Unicode下其码值为53d1(根据惯例,Unicode字符一般即为\uhex的形式,其中hex是码值的十六进制表示,所以“发”的Unicode记法就是\u53d1).
为方便下面的讲解,这里先约定两种提法:
ASCII字符,即ASCII编码表中的字符(也就是码值在0 ~ 127之间的字符,不包括扩展ASCII字符),每个字符用一个字节表示。常见的英文字符和半角标点符号,都属于ASCII字符。
非ASCII字符,即ASCII编码表之外的字符,在本书中指多字节字符。中文字符属于“非ASCII字符”,它们在GBK编码中一般占用2个字节,在UTF-8编码中占用3个字节。常见的Unicode编码是UTF-8,它是Unicode的一种存储格式,UTF-16也是一种存储格式。无论是UTF-8还是UTF-16,同一字符的Unicode编码是不变的,只是存储时的变现形式不同。比如“发”的码值53的,但以UTF-8编码保存时占用3个字符,分别是e5 8f 91,保存为UTF-16编码时占用用2个字符,分别53 d1。
最新文章
- velocity的一些用法
- iOS 实现Tabbarcontroller中间自定义样式 最简单的方法
- CF 2B.The least round way
- C#与excel互操作的错误无法将类型为“Excel.ApplicationClass”的COM 对象强制转换为接口类型“Excel._Application”
- @+id/和android:id的区别
- ASP.net Application及Session 的start end 方法总结
- Git起步--git安装与初次运行git前配置
- MSSQL中datetime与unix时间戳互转
- js中的运算符和条件语句
- Android SDK的下载和安装
- 连续查询(Continuous Queries)
- 为Jekyll+GitHub Pages添加全文搜索功能
- python locust 性能测试:locsut参数化-保证并发测试数据唯一性,不循环取数据
- micropython驱动sh1106点亮oled
- Django之ORM查询进阶
- Lua语言总结
- Swift5 语言参考(八) 模式
- 【jquery】 在异步加载的元素上绑定事件
- postgresql----数组类型和函数
- macos修改vmware Fusion的NAT网络