Python文本编码

Sri*_*aju 0 python encoding text decoding character-encoding

我把这个文本放在一个文件中 - Recuérdame(注意它是一个法语单词).当我用python脚本读取这个文件时,我得到这个文本Recuérdame.

我把它读作unicode字符串.我是否需要找到文本的编码是什么并解码?还是我的终端在玩弄诡计?

Cam*_*ron 5

是的,您需要知道文本文件的编码以将其转换为unicode字符串(来自组成文件的字节).

例如,如果您知道编码是UTF-8:

with open('foo.txt', 'rb') as f:
    contents = f.read().decode('utf-8-sig')   # -sig takes care of BOM if present
Run Code Online (Sandbox Code Playgroud)

但是,文件中的文本似乎不是Unicode编码; 重音字符显然存储为XML实体,必须手动转换(帽子的尖端为链接的jleedev).

  • @MovieYoda:啊,看看[这篇文章](http://en.wikipedia.org/wiki/Byte-order_mark).基本上,当它一起使用多个字节来表示单个字符时(如UTF-8的情况),这些字节可以按照与预期不同的顺序进行解释(此顺序称为字节顺序).因此,在文件的开头放置一个特殊的明确(和UTF-8的可选项)标记,以指示文件的字节顺序.`-sig`删除BOM(如果它存在),因此您不会将标记显示为unicode字符串的一部分. (2认同)