又被 Python 的字符编码虐了。
平台:
Python27,IronPython
场景:
- 读取包含非 ASCII 字符的 UTF-8 编码的纯文本文件。
- 将包含非 ASCII 字符的 Unicode 字符串写入纯文本文件。
细节:
- 打开文件可以用 open ,也可以用 module 'codecs' 下的 'open'(推荐使用)。codecs.open 的功能更强大,可以指定读取解析文件内容时所使用的编码格式。
- 如果读取的文件头部包含 BOM(Byte order mark),那么用 Python27 读取时,BOM 会被当作内容读取进来,但在 IronPython 环境下,BOM 会被自动忽略。写文件时,考虑到文件将来可能会在其它地方被用到,这时候要考虑是否将 BOM 写入文件头部(方便识别编码)。
- 最好不要在一个字符串(或数组)中夹杂多种编码格式的字符。从文件读取内容后,尽量将其转换成 Unicode 操作,直到必须进行编码时,再将其用具体格式编码。

本文探讨了使用Python 2.7及IronPython处理UTF-8编码文本文件时遇到的问题,包括如何正确读取和写入非ASCII字符,以及使用codecs模块的优势。文中还讨论了Byte Order Mark (BOM) 的处理方式及其对跨平台文件兼容性的影响。

362

被折叠的 条评论
为什么被折叠?



