在Python中读取文件时的编码问题

时间:2014-02-13 09:04:14

标签: python utf-8 character-encoding internationalization utf

我有一个包含

的文件
    foo = "Gro\xdfbritannien"

我正在使用以下内容,但它始终使用\ x

显示原始文本
    import codecs
    f = codecs.open('myfile', 'r', 'utf8')
    for line in f:
      print line
      print line.encode('utf-8')
      print line.decode('utf-8')

我无法看到如何显示正确的编码文本,就像我正在做的那样

    >>> print u'Gro\xdfbritannien'
    Großbritannien

任何提示都将不胜感激!

2 个答案:

答案 0 :(得分:4)

当您的文件包含

行时
foo = "Gro\xdfbritannien"

它包含一个实际的反斜杠字符,后跟xdf。因此,如果将该行读入Python字符串,则将其读作

'foo = "Gro\\xdfbritannien"'

(因为这些都是ASCII字符,如果用utf-8编解码器打开它并不重要。)

所以你需要先使用string_escape编解码器解码它:

>>> foo.decode("string_escape")
'Gro\xdfbritannien'

然后将其解码为正确的Unicode对象

>>> _.decode("latin1")
u'Gro\xdfbritannien'

然后你可以打印

>>> print _
Großbritannien

答案 1 :(得分:-1)

没有编解码器业务。 你应该这样做'foo =“Gro \ xdfbritannien”'

>>> print u'Gro\\xdfbritannien'
Gro\xdfbritannien