zoukankan      html  css  js  c++  java
  • Python--由pycharm设置编码而去深入了解一下编码问题

    下面是一张pycharm的编码配置截图:

     为什么要使用utf-8?GBK是什么?unicode又是什么?with no bom是什么?with bom又是什么?

    先从为什么需要字符编码来说起吧?

    我们知道计算机只能处理数字:0和1 ,如果要处理文本那么就得把文本转换成数字。最早期外国人为了让计算机能够理解他们的英文,就把一个字节从(最高位没用到哦) 0~127 全部都给编码了。最后弄出来了个对照表,来表示生活中会出现的字符,这个对照表就是大家熟知的ASCII对照表。表中的编码称为ASCII码

    一个ASCII码对照表就秒天秒地了么?

    由于中国文字博大精深,外国人哪能料想一个字节的ASCII表示不了中文了;于是中国有位牛人编制出了一套新的编码表:占用了两个字节、还和ASCII不冲突。然后就解决了中文在计算机中的显示问题,后来慢慢就出来了一个叫GB2312的编码,为广大汉字使用者带来福音。

    能表示汉字就算完事儿了么?

    世界上有几百种语言 ,日本人、韩国人相继推出了他们的编码;编码越来越多,各国语言混合在一起就会出现乱码。所以一种号称能够统一万国语言的编码出现了,他就是后世广为使用的Unicode码:Unicode码通常使用两个字节表示一个字符,原有的英文编码从单字节变成双字节,只需要把高字节全部填为0就可以。

    再完善一些:

    日子久了,人们吐槽:一个英文字母根本就占不了两个字节啊?本着节约不浪费的原则,国际组织又推出了一种叫UTF-8的编码,也称可变长度字符编码。好了这下问题都解决了。根据具体情况将Unicode字符编成1-6个字节,时至今日 utf-8编码被广泛运用。

    BOM:Byte Order Mark--定义字节顺序:

    数据在网络传输中分两种顺序:大头和小头。UTF-8编码不需要使用BOM来表明字节顺序,一般我们设置文件编码格式的时候,通常会遇到With No BOM 和 With BOM ,选UTF-8 With NO BOM或者UTF-8 Without BOM就行了。

    最后:

    Python诞生时间比Unicode编码还要早,所以早期的PYTHON是使用ASCII编码来表读文件的。

    1、我们写Python或者其它项目都习惯地将编译器调成UTF-8 编码,这样大家整整齐齐以防乱码。

    2、我们也会经常在.py文件的头部看到这样的声明:

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-

    告诉python编译器,去以utf-8编码去加载所有字符。

  • 相关阅读:
    数据库索引类型及实现方式
    MyBatis从入门到精通(十一):MyBatis高级结果映射之一对多映射
    解决克隆 centos虚拟机后修改克隆后的机器的ip、mac、uuid失败的问题
    多层表达式
    条件过滤
    复杂表达式
    生成列表
    迭代dict的key和value
    迭代dict的value
    索引迭代
  • 原文地址:https://www.cnblogs.com/bigbosscyb/p/12322224.html
Copyright © 2011-2022 走看看