zoukankan      html  css  js  c++  java
  • Day1 基础知识

    数据类型,字符编码

    二进制:

    定义:二进制数据是用01两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”.当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0

    由于计算机只能识别二进制,那么我们怎么把文字或者数字输出出来呢?这就引出了字符编码.最早的字符编码是ASCII,127位表示常用的字符.后面128位是扩展ASCII编码.

     

    :用二进制表示Nick

    字符    十进制   二进制

    N          78        1001110

    i     105     1101001

    c     99           1100011

    k     107         1101011

    所以Nick的二进制表示就是 01001110 01101001 01100011 01101011

    好了.现在用ASCII表示英文和数字是没有问题了.那么问题来了,怎么输出中文呢?所以,中国自己编写了一套编码表GB2312,1981-5-1实施,7000多个字符汉字.

    但是这套编码的汉字太少了.有些生僻字就无法显示了.于是在1995,国家发布了GBK1.0兼容GB2312,共存储20000余个汉字,其中包括汉语和日语中的汉字.2000年的时候,国家又发布了GB18030编码表, 是对GBK1.0的扩展.覆盖了中文,日文,朝鲜语和少数民族文字.兼容GB2312GBK1.0

    每个国家都有自己的编码,但是互相不兼容.使用其他十分麻烦.因此unicode应运而生.

    Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。

    Unicode标准也在不断发展,但最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节)。现代操作系统和大多数编程语言都直接支持Unicode

    新的问题又出现了:如果统一成Unicode编码,乱码问题从此消失了。但是,如果你写的文本基本上全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。

    UTF-8

    可变长的字符编码.英文占用一个字节,汉字占用3个字节.其他生僻字符占用4-6个字符.

    我们就可以总结一下现在计算机系统通用的字符编码工作方式:

    在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件。

    当不知道字符编码的时候,可以用一个插件检测.chardet

    terminal中 输入pip3 install chardet 开始下载安装chardet

    import chardet

    result = chardet.detect(open(‘log.txt’, ‘rb).read())

    print(result)

    输出结果如下:

    {'encoding': 'utf-8', 'confidence': 0.99, 'language': ''}

    上面表示:log.txt的字符编码99%的可能是utf-8

     可变,不可变数据类型

  • 相关阅读:
    记一次VS2010和VS2015自定义颜色的过程
    Git使用笔记
    VS winsock.h和ws2def.h大量重定义报错的问题
    在ASP.NET MVC 3中使用日志记录组件Elmah和NLog
    Entity Framework 6新特性:全局性地自定义Code First约定
    在ASP.NET MVC 3 中自定义AuthorizeAttribute时需要注意的页面缓存问题
    SSH开发记录
    iOS开发知识要点
    (收藏)在 iPhone/iPad 中随意修改数字键盘按钮
    iPhone开发 – 数据持久化
  • 原文地址:https://www.cnblogs.com/lovepy3/p/8650464.html
Copyright © 2011-2022 走看看