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:不支持的格式字符'q'(0x71)在索引1”:
x = '%q' % 1 # that is %d !