windows下python 编码问题

windows下py文件编码:

当print 时遇到unicode 会根据系统编码转换,

而raw_input 中的输出遇到unicode编码是不会的转码的,会报错UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordin

al not in range(128)

因为uncode的编码的第一个字符大于128(0x7f)

下面的实验能证明:

 1 #coding:utf8
 2 a=u'你好'
 3 print 'with u:',buffer(a)
 4 
 5 print 'per char:',
 6 for i in a:
 7     print ord(i),
 8 print u'在文件中,变量中保存的加u的字符串会被转换为unicode类型,a变量是unicode字符串'
 9 
10 b='你好'
11 print ''
12 print 'without u:',buffer(b)
13 print 'percahr:',
14 for i in b:
15     print ord(i),
16 
17 print u'在文件中不加u的字符串在变量中保存的 与文件指示编码一致,b变量是被utf8编码过的字符串'
18 
19 c=raw_input('输入字符串:\n'.decode('utf8').encode('gbk'))
20 
21 print u'上句raw_input 中的字符串加u会报错,raw_input的输出会直接输出到终端,不会转换为gbk'
22 m=raw_input("继续输入一个字符串:\n")
23 
24 print u'这是输入的字符,是gbk编码的,不会乱码:',m
25 
26 print u'上一句产生乱码是因为其中的(raw_input函数中的)utf8编码的数据恰好在gbk中能对应到'
27 
28 
29 print type(c)
30 print u'输入的字符串:'
31 for i in c:
32     print ord(i),
33 print u'输入的字符串跟终端的环境制定的编码是一样的'

 

posted @ 2014-03-11 10:58  Come~on!  阅读(697)  评论(0编辑  收藏  举报