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

    字符编码是个很大的概念,网上有很多讲解,但有个容易忽略的点,这里补充一下:

    是以什么编码存和以什么编码读,是不一样的

    从一个小问题出发:

    以windows记事本为例,在记事本输入“联通”两个字,以ANSI编码保存,关闭再打开,就变成了乱码

    原因:

    事实上,我们的记事本指定以什么编码存储文件之后,就直接转换成对应的二进制数保存在文件中,并没有一个内置信息说明该文件是以什么编码存储的,这就导致下次再打开时,根本不知道上次保存是什么编码保存到,并没有记录,只能计算机自己去认这些内容的二进制数据,再来“猜”它是什么编码。

    而“联通”这两个字的ANSI编码(在中国大陆是gbk编码),刚好长得很像uft-8的编码,所以计算机猜成了utf-8的编码,解码按照uft-8来解码,导致了乱码。

    python2中,为了避免像记事本这种“存的时候知道以什么编码存,但读的时候不知道以什么编码读”这种问题,所以需要手动指定读编码的格式

    比如 # -*- coding: utf-8 -*-   ,若不指定,则python2默认以ASCII码读,python3默认以utf-8编码来读(此处说的以什么方式读,指的读代码的源文件,因为代码也是一种文本,需要指定编码方式)

    如果是对文件操作,例如读一个文件 f = open('file', 'r', encoding='utf-8') ,指的是用uft-8来读这个文件。  注意的是,这里的encoding和# -*- coding: utf-8 -*-完全是两个东西,它们功能不同,一个指定文件编码,一个指定代码的编码,是不同东西不要弄混了

  • 相关阅读:
    HDU2059(龟兔赛跑)
    pat 1012 The Best Rank
    pat 1010 Radix
    pat 1007 Maximum Subsequence Sum
    pat 1005 Sign In and Sign Out
    pat 1005 Spell It Right
    pat 1004 Counting Leaves
    1003 Emergency
    第7章 输入/输出系统
    第六章 总线
  • 原文地址:https://www.cnblogs.com/jx-z/p/10204790.html
Copyright © 2011-2022 走看看