zoukankan      html  css  js  c++  java
  • python字符编码小结

    首先简要说一下各种字符编码:

      1. ASCII

        计算机只认识0101,但如何让计算机认识人类语言?将每个字母和符号给予固定的编号,然后将这个编号转换成二进制,计算机就可以正确识别这些字母与符号,同时计算机也可以逆操作,将二进制转换成对应的编号在翻译成相应的字符来显示给人类,所以产生了ASCII编码。ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。

      2. GB2312

        计算机是美国人发明的,所以美国佬搞了个ASCII编码,但是我们中国人也得用计算机不是,如何让计算机认识中文?所以中国国家标准总局搞了个GB2312编码来让计算机认识中文,后来又搞了一个GBK来扩展了一些中、日、韩的文字,这样,计算机可以认识中文了。

      3. Unicode

        现在中文、英文可以被识别,但问题来了,世界还有阿拉伯语、西班牙语、日语、韩语等其他语言,所以就搞了一个Unicode编码,支持所有国家的语言,所以Unicode被称为统一编码或者万国码。

      4. UTF-8

        Unicode收录了世界上所有语言中的文字,所以速度就会变慢,为了提升效率,就有了一种中间的字符集: UTF,  我们常用的UTF-8就是其中一种。

    为了处理英文,有了ASCII编码

    为了处理中文,有了GB2312

    为了处理各国字符,有了Unicode

    为了提升效率,有了UTF-8

    对于Unicode,长这个样字:    u751Fu5316u5371u673A

    我们认识吗?不认识,所以需要转换成utf-8

    这里牵扯到encode和decode (encode代表将字符串编码为Unicode,decode代表将Unicode解码为decode)

    在python3中 str字符串是没有办法直接decode的,所以先encode再decode

    data = r'u751Fu5316u5371u673A'
    print(data.encode('utf-8').decode('unicode_escape'))

    (单引号前的哪个r,代表这个字符串为原始字符,即忽略所有转义符)

    但是在爬数据时,尤其是获取html页面中文字时,会出现这种东西: 沃尔玛

    这是啥呢? 这也是Unicode,但是这时经过html转移后的Unicode,这东西需要转换成呢我们认识的汉字:

    from html import unescape
    str = '沃尔玛'
    print(unescape(str))

    调用html库里边的unescape来进行解码,

    那如果要将汉字编码成  沃尔玛 这种问麽办?

    from html import escape
    content = '<image id="德玛西亚">'
    print(escape(content))

    这是一个标签,经过编码后的结果是:

    看来 这个只能将标签符号进行编码,英文、中文、等号不能够进行编码。

    想了解更多Python关于爬虫、数据分析的内容,欢迎大家关注我的微信公众号:悟道Python

      

  • 相关阅读:
    SpringBoot部署jar与war
    Calendar代替Date常用方法小记
    Zookeeper注册中心底层实现小记
    1480. Running Sum of 1d Array
    700. Search in a Binary Search Tree
    1410. HTML Entity Parser
    1409. Queries on a Permutation With Key
    1408. String Matching in an Array
    1404. Number of Steps to Reduce a Number in Binary Representation to One
    1405. Longest Happy String
  • 原文地址:https://www.cnblogs.com/ss-py/p/9921086.html
Copyright © 2011-2022 走看看