zoukankan      html  css  js  c++  java
  • Python合集之Python字符串编码转换

        最早的字符串编码是美国标准信息交换码,即ASCII码,他仅对10个数字,26个大写英文字母、26个小写英文字母及一些其他符号进行了编码。ASCII码最多只能表示256个符号,每个符号占一个字节。随着信息技术的发展,各国文字都需要进行编码,于是出现了GBK、GB2312、UTF-8编码等。其中GBk和GB2312是我国制定的中文编码标准,使用一个字节表示英文字母,2个字节表示中文字符。而UTF-8是我国通用的编码,对全世界所有国家用到的字符都进行了编码。UTF-8采用一个字节表示英文字符、3个字节表示中文。在Python3.X中。默认采用的编码格式为UTF-8,采用这种编码有效地解决了中文乱码的问题。

        在Python中,有两种常用的字符串类型,分别是str和bytes。其中str表示Unicode字符(ASCII码或者其他)bytes表示二进制数据(包括编码的文本)。这两种类型的字符串不能拼接在一起使用。通常情况下,str在内存中以Unicode表示,一个字符对应诺干个字节。但是如果在网络上传输,或者保存到磁盘上,就需要把str转换为字节类型,即bytes类型。

    注:bytes类型的数据时带有b前缀的字符串(用单引号或者双引号表示)例如 b'xd2xb0'和'bmr'都是bytes类型的数据。

    str类型和bytes类型之间可以通过encode()和decode()方法进行转换,这两个方法是互逆的过程。

    1.使用encode()方法编码

    encode()方法为str对象方法,用于将字符串转换为二进制数据(即bytes)也称为编码,其语法格式如下:

    str.encode([encoding="utf-8"][,errors="strict"])
    参数说明:
    str:表示要进行转换的字符串
    encoding="utf-8":可选参数,用于指定进行转码时采用的字符编码,默认为UTF-8,如果想使用简体中文,也可以设置为gb2312。
    当只有一个参数时,也可省略前面的encoding=,直接写编码。 errors="strict":可选参数,用于指定错误处理方式,其可选址值strict(遇到非法字符就抛出异常)
    ignore(忽略非法字符)、
    replace(用?替换非法字符)或
    xmlcharrefreplace(使用xml的字符引用)等,默认为strict。

    注:在使用encode()方法时,不会修改原字符串,如果需要修改原字符串,需要对其进行重新赋值。

    例如:

    verse='野渡无人舟自横'
    byte=verse.encode('GBK')
    print('原字符串:',verse)
    print('转换后:',byte)

    2.使用decode()方法

    decode()方法为bytes对象的方法,用于将二进制转换为字符串,即将使用encode()方法转换的结果再转换为字符串,也称为“解码”,语法格式如下:

    bytes.decode([encoding="utf-8"][,errors="strict"])
    参数说明:
    bytes:表示要进行转为二进制数据,通过是encode()方法转换后的结果。
    encoding="utf-8":可选参数,用于指定进行解码时采用的字符编码默认为utf-8,如果想使用简体中文,可以设置为gb2312。
    当只有一个参数时,可以省略前面的encoding=,直接写编码。
    errors="strict":可选参数,用于指定错误处理方式,其可选址值strict(遇到非法字符就抛出异常)
    ignore(忽略非法字符)、
    replace(用?替换非法字符)或
    xmlcharrefreplace(使用xml的字符引用)等,默认为strict。

    注:在使用decode()方法时,不会修改原字符串,如果需要修改原字符串,需要对其进行重新赋值。

    例如:上面示例中编码后得到的结果,在这里进行解码:

    print('解码后:',byte.decode('GBK'))

    花絮:

    本期的Python 字符串编码的转换就分享到这里,下期我们将继续分享Python字符串正则表达式的相关知识,感兴趣的朋友可以关注我。

    同时也可以关注下我的个人 微信订阅号,园子里面的文章也会第一时间在订阅号里面进行推送跟更新。

  • 相关阅读:
    Linux中杀不死的进程
    SQL语句 不支持日语 韩语 泰国语等的解决办法
    很长时间没写,重新开始每天进步一点点
    c#使用access数据库时 模糊查询 like 通配符的写法
    每天进步一点点之找工作的心路历程
    每天进步一点点之工作前三天
    Ajax实现原理
    java动态代理的原理
    css定位机制总结
    迷宫,较为高效的C++代码 BFS实现
  • 原文地址:https://www.cnblogs.com/a-mumu/p/14453997.html
Copyright © 2011-2022 走看看