计算机里只有高低电频。
一:知识介绍
字符 A 是如何显示在屏幕上的?
1.在键盘按下 A按键,键盘将A转化为电量的变化(数值65),通过 USB 口,到达计算机电路板。计算机根据这数值,对照 ASCII 表(这要看你当前系统默认是哪种编码了。),根据画出 ‘A’ 的计算公式,在屏幕上,涂黑一个个像素点,画出图形‘A’的样子。至此,你按下 A,看到了屏幕上的 A。
2.屏幕是怎么显示出字符 A ?
对照了ASCII 表后,到相应位置(字库)取得了字符 A 的图形矩阵(由传说中的专业人士事先一个个像素画好存放在电脑里),然后按照A 的形状一个个像素点画出 A 来,就像纹身一样,最终才显示在屏幕。
- 编码字符集(也简称为 字符集 )
ASCII 表,就是个编码字符集(字符集)。它是你和电脑之间的翻译官。
字符集们的历史,想当年......
美国人只用一字节表示所有的英文字母,有了 ASCII 表。
1981年,中国大陆用了几个字节表示了所有中文,有了GB2312 表(兼容了 ASCII)。
1984年,中国台湾多使用繁体字,发明了 BIG5 表(兼容了 ASCII)。
但是 GB2312 明显是没有兼容 BIG5 的,所以,1985年,你发一封邮件给台湾的同事,他在电脑上打开,乱码。
因为他电脑里没有 GB2312 这个翻译官。
这样不行,各地区交流麻烦。
于是国际组织发明一种字符集 Unicode ,包含世界上所有国家,地区的文字。
Unicode 字符集,有各种字符编码,UTF-8,UTF-16 等。
Windows 的内码是 Unicode,只要文件能说明自己使 用什么编码,用户又安装了对应的代码页(字符编码),Windows 就能正确显示(呵).。
部分代码页举例:
932 —日文
936 —简体中文(GBK)
949 —韩文
950 —繁体中文(大五码)
65001 — UTF-8 Unicode
所以,现在台湾同事发过来的文件不会乱码了,只要你的 Windows 系统上,有这个 BIG5 的代码页(950)。你可以将系统的当前活动代码页转换为
BIG5 后,再打开文件。
这是系统层面。不过,现在很多软件都支持各种编码,比如 sublime ,可以打开,然后刷新文件编码为 BIG5 。就可以了。
1.常用做法
在 Python 源代码文件开头中加上两句话(虽然前面是#号,但操作系统认的):
#!/usr/bin/env python3
#-*- coding: utf-8 -*- 表示本文档是要以 utf-8 来编码的。这话是说给操作系统听的,因为是操作系统负责 存储 和 读取 该文档。
2.涉及函数
数值与字符转换:
print(ord('我')) 25105 #字符转为整型
print(chr(25105)) 我 #数值转为字符
字符串长度:
print(len('ABC')) 3 # 3 个字符
print(len('我')) 1 # c 一般是两个字节(c 可不管你是几个字,实在地给你算出是几个字节)。java 也是一,代表一个字符。
3.闲话
linux 文件是 utf-8 编码的,而 windows 文件的编码方式很多(你保存一个 txt 的时候,就可见可选的编码,ANSI , Unicode )。
当然,我们大家都用 Unicode 并以 utf-8 编码就最好不过了,但不可否认,再好的编码将来也会被更好的替代。而同时,我们不得不做的是,兼容老版本的编码。比如,你要和原来的交易系统联调,你总不能说,我用的是最新的,你后台自己改吧,你老大反手一巴掌。。。。有些时候,旧的已经没法改了,不是没人改,就是影响太大,改了,谁也收拾不了这乱摊子。陈年代码,散发着无穷的魅力,令人热血沸腾,尸骨无存。
Python3 就有点特别了哈,它还真的不是这般人,就没想着兼容,要走得快,走得好,走得大步。与 python2 脱节。相信在智能系统上,它能发挥很重要的作用