处理文本的最佳实践是“Unicode 三明治”
- 要尽早把输入(例如读取文件时)的字节序列解码成字符串。
- 这种三明治中的“肉片”是程序的业务逻辑,在这里只能处理字符串对象。
- 在其他处理过程中,一定不能编码或解码。
- 对输出来说,则要尽量晚地把字符串编码成字节序列。
案例
例如,在 Django 中,
视图应该输出 Unicode 字符串;
Django 会负责把响应编码成字节序列,而且默认使用 UTF-8 编码。
编码建议 显示指明编码
编码默认值的最佳建议是:别依赖默认值
明确指定encodeing
二进制模式
除非想判断编码,否则不要在二进制模式中打开文本文件;
即便如此,也应该使用 Chardet,而不是重新发明轮子
总结
Unicode 三明治
- 尽早 字节序列解码成字符串
- 三明治中的“肉片”是程序的业务逻辑,在这里只能处理字符串对象
- 尽量晚地把字符串编码成字节序列
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。