• 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('输入字符串:
    '.decode('utf8').encode('gbk'))
    20 
    21 print u'上句raw_input 中的字符串加u会报错,raw_input的输出会直接输出到终端,不会转换为gbk'
    22 m=raw_input("继续输入一个字符串:
    ")
    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'输入的字符串跟终端的环境制定的编码是一样的'
  • 相关阅读:
    ES6之Promise封装ajax()
    ECMAScript 6 入门之 展开运算符(...)
    函数篇:Callback----回调函数
    Vue-cli组件中写一个节流函数
    使用vant中的地址编辑组件
    js中substr()、substring()、chatAt()的区别
    npm使用国内淘宝镜像的方法
    js数组
    ECMAScript版本
    匿名函数的调用
  • 原文地址:https://www.cnblogs.com/Yeah-come-on/p/3593437.html
Copyright © 2020-2023  润新知