美文网首页
python2的编码和解码问题

python2的编码和解码问题

作者: 不一样的丶我们 | 来源:发表于2018-01-11 09:44 被阅读105次

    怀念python3

    • python3默认情况下,是通过Unicode直接编码操作的,对于字符串,特殊字符,数字的支持都是一致的,字符串的编码和解码非常简洁.
    s = "abc"
    # 声明了一个字符串这个字符串就是构造了一个str对象,默认情况下就是通过Unicode直接编码的字符.
    # 如果将字符转化为字节,进行编码操作:
    s.encode("utf-8")
    >>> s = "中文"
    >>> x = s.encode("utf-8")
    >>> x
    >>> b'\xe4\xb8\xad\xe6\x96\x87'
    # 如果将字节转化为字符,进行编码操作:s.decode("utf-8")
    >>> x
    >>> b'\xe4\xb8\xad\xe6\x96\x87'
    >>> x.decode("utf-8")
    >>> '中文'
    
    • python2中,默认情况下是通过ascii编码进行操作的
    • python中有这样几种类型[basestring|str|unicode],其中str和Unicode是集成自basestring的
    • 创建的字符串s = "abc"是str类型的,在python2中是bytes字节类型的
    # 默认情况下
    >>> s = "中文"
    >>> s
    >>> '\xd6\xd0\xce\xc4'
    # 如果在声明的时候就需要一个中文字符串,在字符串的前面添加一个u字符,表示是通过unicode编码的.
    >>> s = u'中文'
    >>> s
    >>> u'\u4e2d\u6587'
    # 如果是默认字节形式的中文字符串,要得到原本的中文形式,需要decode()函数操作
    >>> s = "中文"
    >>> s
    >>> '\xd6\xd0\xce\xc4'
    >>> x = s.decode('gbk')
    >>> x
    >>> u'\u4e2d\u6587'
    # 如果要将一个unicode编码的字符串转换成ascii编码进行后续的操作.
    # 为什么要转化成ascii编码?
    # 因为python内置的大量模块,并没有提供中文支持,调用内置模块的函数操时,如果出现非ascii编码,就会出现ascii编码不支持的错误.
    >>> UnicodeEncodeError: 'ascii' codec can't encode characters
    # 将unicode字符串,转换成bytes类型的str字符串
    # 转换方式:
    >>> s = u'中文'
    >>> s
    >>> u'\u4e2d\u6587'
    >>> x = s.encode("gbk")
    >>> x
    >>> '\xd6\xd0\xce\xc4'
    
    • python2中, 将一个字符串确定类型[str|unicode],然后根据实际的类型进行操作
      • 如果是用于控制台等等展示操作(给人看):字符的方式展示
      • 如果是用于python2内建模块惊醒使用(python2使用):字节的方式使用
    • 警告
      • python2中的str类型,默认就有一个encode()函数,但是这个函数只是在定义时为了对象操作的完整性出现的,使用会直接报错[预计-保留函数]
      • python2中的unicode类型,默认有一个decode()函数,同样不要去使用!

    python2编码解码的问题~字符串

    • 核心:字节和字符之间的转换
    • 字节:专门给程序员使用[python2内建的模块,并不是支持中文,如~写入文件write()]
    • 字符:给用户看
    • python2内置字符串[basestring<-|str|unicode]
    • 默认创建的字符串str类型的,bytes字节类型
    • 字节类型str->字符类型unicode:s.decode("utf-8")
    • 字符类型unicode->字节类型str:s.encode("utf-8")
      • 默认encode("ascii")

    相关文章

      网友评论

          本文标题:python2的编码和解码问题

          本文链接:https://www.haomeiwen.com/subject/alcznxtx.html