zoukankan      html  css  js  c++  java
  • python编码问题的理解与解决

    错误:'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

    看到网上很多都不清楚,做了一天的实验,终于搞清楚这些原理

    如果有错误请指出,谢谢,希望不要一开口就喷。

    总结:理解3个概念,代码编码类型,即python的源代码的编码格式,有中文必须#coding:utf-8,这句话是说pytho以utf-8去解析代码

                                       系统编码类型,指的是控制台的输出平台的编码类型

              系统默认编码类型,指的是在需要转换时的默认转换,一开始把这个与第一点混淆了。

    举例:

    1.

    python默认的代码编码类型为ascii 

    代码中字符串的默认编码与代码文件本身的编码一致

    s='中文' 这里的s为ascii类型

    #coding:utf-8
    必须得有这句才能识别出中文。无论是str还是unicode都得出现这句。
    str默认是utf-8编码类型
    s='中文' 这里的s为utf8类型
    2
    如果字符串是这样定义:s=u'中文'
     则该字符串的编码就被指定为unicode了,即python的内部编码,而与代码文件本身的编码无关。因此,对于这种情况做编码转换,只需要直接使用encode方法将其转换成指定编码即可
     
    3
    import sys
    reload(sys)
    sys.setdefaultencoding('utf-8')

    设置系统默认编码方式为utf-8

    即没有说明的需要转换的会使用utf-8进行转换。

    4 linux系统编码是utf-8,即控制台是utf-8

    print 出来的东西必须和控制台的编码格式兼容。

    5文件的读入

    str的类型为读入的文件的类型

    #coding:utf-8                   声明出现的中文为utf-8。
    import sys
     
    print sys.getdefaultencoding()  系统的默认编码方式认为ascii,
     
    a = '中文' 
    b = u'中文'                                                                                                           
    print repr(a),repr(b)
    print a,  b.encode('utf-8')   #这里的终端是utf-8,a是str,即为utf-8,b是unicode,默认编码为所以必须转成utf-8
     
    reload(sys)
    sys.setdefaultencoding( "utf-8" )
    print sys.getdefaultencoding()
    
    a = '中文' 
    b = u'中文'                                                                                                           
    print type(a),type(b)        #这里终端已经是utf-8,a是str,即utf-8,b是unicode,系统默认编码为utf-8,所以会默认进行utf8编码,效果与主动编码一样
    print repr(a),repr(b)
    print a,   b
    
    
  • 相关阅读:
    千亿美元规模,云计算的下半场将走向何方?
    巧用云原生能力和工具,提升云上运维效率
    基础设施代码化(IaC)的自动化配置与编排
    盘点2020 | 阿里云弹性计算年度关键词:快、弹、稳
    整体算力提升40% 芯片级安全防护 | 阿里云发布第七代ECS云服务器
    真正云原生的智能运维体系,阿里云发布ECS自动化运维套件
    安装wireshark
    查看linux的登录日志 centos7
    CentOS查看系统当前登录用户信息的4种方法
    free -m查询内存使用情况,祥解
  • 原文地址:https://www.cnblogs.com/linjiaqin/p/5562030.html
Copyright © 2011-2022 走看看