【发布时间】:2016-10-04 08:05:30
【问题描述】:
PEP-263 指定源中指定的编码按以下顺序应用:
读取文件
假设每个文件的编码固定,将其解码为 Unicode
将其转换为 UTF-8 字节字符串
标记 UTF-8 内容
编译它,从给定的 Unicode 数据创建 Unicode 对象 并从 Unicode 文字数据创建字符串对象 首先将 UTF-8 数据重新编码为 8 位字符串数据 使用给定的文件编码
所以,如果我采用以下代码:
print 'abcdefgh'
print u'abcdefgh'
并将其转换为 ROT-13:
# coding: rot13
cevag 'nopqrstu'
cevag h'nopqrstu'
我希望它首先被解码,然后变得与原始相同,打印:
abcdefgh
abcdefgh
但是,它会打印:
nopqrstu
abcdefgh
因此,unicode 文字按预期工作,但 str 仍未转换。 为什么?
排除一些可能性:
我确认问题不在后期阶段(打印到控制台),而是在解析时立即出现,因为此代码产生 "ValueError: unsupported format character 'q' (0x71) at index 1" em>:
x = '%q' % 1 # that is %d !
【问题讨论】:
标签: python python-2.7 character-encoding