python【进阶】4.文本和字节序列
文章目錄
- 1. 字符、碼位和字節(jié)表述
- 4.1字符問題
- 2. bytes、bytearray 和 memoryview 等二進制序列的獨特特性
- 3. 全部 Unicode 和陳舊字符集的編解碼器
- 4.避免和處理編碼錯誤
- 5.處理文本文件的最佳實踐
- 6.默認(rèn)編碼的陷阱和標(biāo)準(zhǔn) I/O 的問題
- 7.規(guī)范化 Unicode 文本,進行安全的比較
- 8.規(guī)范化、大小寫折疊和暴力移除音調(diào)符號的實用函數(shù)
- 9.使用 locale 模塊和 PyUCA 庫正確地排序 Unicode 文本
- 10.Unicode 數(shù)據(jù)庫中的字符元數(shù)據(jù)
- 11.能處理字符串和字節(jié)序列的雙模式 API
1. 字符、碼位和字節(jié)表述
4.1字符問題
“字符串”是個相當(dāng)簡單的概念:一個字符串是一個字符序列。問題出在“字符”的定義上。
在 2015 年,“字符”的最佳定義是 Unicode 字符。
Unicode 標(biāo)準(zhǔn)把字符的標(biāo)識和具體的字節(jié)表述進行了如下的明確區(qū)分。
字符的標(biāo)識,即碼位,是 0~1 114 111 的數(shù)字(十進制),在 Unicode 標(biāo)準(zhǔn)中以 4~6
個十六進制數(shù)字表示,而且加前綴“U+”。例如,字母 A 的碼位是 U+0041,歐元符號
的碼位是 U+20AC,高音譜號的碼位是 U+1D11E。在 Unicode 6.3 中(這是 Python 3.4
使用的標(biāo)準(zhǔn)),約 10% 的有效碼位有對應(yīng)的字符。
字符的具體表述取決于所用的編碼。編碼是在碼位和字節(jié)序列之間轉(zhuǎn)換時使用的算
法。在 UTF-8 編碼中,A(U+0041)的碼位編碼成單個字節(jié) \x41,而在 UTF-16LE
編碼中編碼成兩個字節(jié) \x41\x00。再舉個例子,歐元符號(U+20AC)在 UTF-8 編
碼中是三個字節(jié)——\xe2\x82\xac,而在 UTF-16LE 中編碼成兩個字
節(jié):\xac\x20。
把碼位轉(zhuǎn)換成字節(jié)序列的過程是編碼;把字節(jié)序列轉(zhuǎn)換成碼位的過程是解碼。
- 如果想幫助自己記住 .decode() 和 .encode() 的區(qū)別,可以把字節(jié)序列想成
晦澀難懂的機器磁芯轉(zhuǎn)儲,把 Unicode 字符串想成“人類可讀”的文本。那么,把字節(jié)
序列變成人類可讀的文本字符串就是解碼,而把字符串變成用于存儲或傳輸?shù)淖止?jié)
序列就是編碼。
2. bytes、bytearray 和 memoryview 等二進制序列的獨特特性
3. 全部 Unicode 和陳舊字符集的編解碼器
4.避免和處理編碼錯誤
5.處理文本文件的最佳實踐
6.默認(rèn)編碼的陷阱和標(biāo)準(zhǔn) I/O 的問題
7.規(guī)范化 Unicode 文本,進行安全的比較
8.規(guī)范化、大小寫折疊和暴力移除音調(diào)符號的實用函數(shù)
9.使用 locale 模塊和 PyUCA 庫正確地排序 Unicode 文本
10.Unicode 數(shù)據(jù)庫中的字符元數(shù)據(jù)
11.能處理字符串和字節(jié)序列的雙模式 API
總結(jié)
以上是生活随笔為你收集整理的python【进阶】4.文本和字节序列的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 千脑跳转页面下的安全分析
- 下一篇: shiro学习(22):动态添加验证规则