我使用的是 Python 2.5。这里发生了什么?我误解了什么?我该如何解决?
in.txt:
Stäckövérfløw
code.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
print """Content-Type: text/plain; charset="UTF-8"\n"""
f = open('in.txt','r')
for line in f:
print line
for i in line:
print i,
f.close()
输出:
Stäckövérfløw
S t � � c k � � v � � r f l � � w
最佳答案
for i in line:
print i,
读文件的时候,读入的字符串是字节串。 for 循环一次迭代一个字节。这会导致 UTF-8 编码字符串出现问题,其中非 ASCII 字符由多个字节表示。如果你想使用 Unicode 对象,字符是基本部分,你应该使用
import codecs
f = codecs.open('in', 'r', 'utf8')
如果 sys.stdout
还没有合适的编码集,您可能需要将其包装起来:
sys.stdout = codecs.getwriter('utf8')(sys.stdout)
关于python - 读取字符时python中的UTF-8问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/985486/