python【进阶】4.文本和字节序列

22 篇文章 0 订阅
15 篇文章 0 订阅

1. 字符、码位和字节表述

4.1字符问题

“字符串”是个相当简单的概念:一个字符串是一个字符序列。问题出在“字符”的定义上。
在 2015 年,“字符”的最佳定义是 Unicode 字符。

Unicode 标准把字符的标识和具体的字节表述进行了如下的明确区分。
字符的标识,即码位,是 0~1 114 111 的数字(十进制),在 Unicode 标准中以 4~6
个十六进制数字表示,而且加前缀“U+”。例如,字母 A 的码位是 U+0041,欧元符号
的码位是 U+20AC,高音谱号的码位是 U+1D11E。在 Unicode 6.3 中(这是 Python 3.4
使用的标准),约 10% 的有效码位有对应的字符。
字符的具体表述取决于所用的编码。编码是在码位和字节序列之间转换时使用的算
法。在 UTF-8 编码中,A(U+0041)的码位编码成单个字节 \x41,而在 UTF-16LE
编码中编码成两个字节 \x41\x00。再举个例子,欧元符号(U+20AC)在 UTF-8 编
码中是三个字节——\xe2\x82\xac,而在 UTF-16LE 中编码成两个字
节:\xac\x20。
把码位转换成字节序列的过程是编码;把字节序列转换成码位的过程是解码。

  • 如果想帮助自己记住 .decode() 和 .encode() 的区别,可以把字节序列想成
    晦涩难懂的机器磁芯转储,把 Unicode 字符串想成“人类可读”的文本。那么,把字节
    序列变成人类可读的文本字符串就是解码,而把字符串变成用于存储或传输的字节
    序列就是编码。

2. bytes、bytearray 和 memoryview 等二进制序列的独特特性

3. 全部 Unicode 和陈旧字符集的编解码器

4.避免和处理编码错误

5.处理文本文件的最佳实践

6.默认编码的陷阱和标准 I/O 的问题

7.规范化 Unicode 文本,进行安全的比较

8.规范化、大小写折叠和暴力移除音调符号的实用函数

9.使用 locale 模块和 PyUCA 库正确地排序 Unicode 文本

10.Unicode 数据库中的字符元数据

11.能处理字符串和字节序列的双模式 API

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值