源编码如何应用于字符串文字?

时间:2016-10-04 08:05:31

标签: python python-2.7 character-encoding

PEP-263指定源中指定的编码按以下顺序应用:

  
      
  1. 阅读文件

  2.   假设每个文件编码固定

  3. 将其解码为Unicode   

  4. 将其转换为UTF-8字节字符串

  5.   
  6. 将UTF-8内容标记为

  7.   
  8. 编译它,从给定的Unicode数据创建Unicode对象   并从Unicode文字数据创建字符串对象   首先将UTF-8数据重新编码为8位字符串数据   使用给定的文件编码

  9.   

所以,如果我拿这个代码:

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 !

0 个答案:

没有答案