python2和python3的编码格式

1、Python2和Python3的 字符编码 和 字符类型

Python3:
Unicode字符串 str 类型
非Unicode字符串 bytes 类型

Python2:
Unicode字符串 unicode 类型
非Unicode字符串 str 类型

2、python的Unicode和非Unicode的转换

非Unicode字符串,可以通过decode解码为Unicode字符串
unicode_str = utf8_str.decode(“utf-8”)
# Unicode字符串, 可以通过 encode 编码为其他编码
gbk_str = unicode_str.encode(“gbk”)
 

3、终端创建字符串的编码
在解释器终端创建的字符串
Python2:根据操作系统决定
Linux为utf-8、简体简体中文Windows 为 gbk。注意,如果是iPython创建的,都是 utf-8
Python3:Unicode 编码

4、文件编码
写入字符串到文件中,文件创建成功,则文件编码等同于写入的字符串编码。

如果写入了其他编码的字符串,则文件编码被修改,原来的内容会变成"乱码"。

5、处理字符串写入文件时候的编码。

Python不能直接写 Unicode字符串到文件中,必须写入 非Unicode

1. 手动转码处理

    Python3:
        # w 必须写 Unicode, wb 写非Unicode(gbk、utf-8、jpg、mp4)
        with open("xxx.txt", "wb") as f:
            f.write(unicode_str.encode("utf-8"))

    Python2:
        # w 写字符串, wb 写非字符串
        with open("xxx.txt", "w") as f:
            f.write(unicode_str.encode("utf-8"))


2. 通过 open()方法的 encoding 参数

    Python3:
        with open("xxx.txt", "w", encoding="utf-8") as f:
            f.write(unicode_str)

    Python2:
        Python2的 open() 没有 encoding,但是可以通过 codecs 模块解决

        import codecs
        with codecs.open("xxx.txt", "w", encoding="utf-8") as f:
            f.write(unicode_str)


3. 如果强行写入Unicode字符串,且并没有通过 1 和 2 处理,则Python解释器编码尝试转码再写入。

     with open("xxx.txt", "w") as f:
         f.write(unicode_str)

    Python2 默认解释器编码是 ascii,在处理中文则报错 UnicodeEncodeError 无法按 ASCII编码处理中文字符串,

        解决方案,将Python2 解释器编码修改为 utf-8

        import sys
        reload(sys)
        sys.setdefaultencoding("utf-8")


    Python3 默认解释器编码是平台的编码格式,一定需要设置
!

 

更多内容请关注微信公众号“外里科技

官方公众号外里科技
运营公众号英雄赚
微信wxid_8awklmbh1fzm22
QQ1247408032
开源代码https://gitee.com/B_T/beimi

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值