計(jì)算機(jī)里只有高低電頻砾医。
一:知識(shí)介紹
字符 A 是如何顯示在屏幕上的泼掠?
1.在鍵盤(pán)按下 A按鍵怔软,鍵盤(pán)將A轉(zhuǎn)化為電量的變化(數(shù)值65),通過(guò) USB 口择镇,到達(dá)計(jì)算機(jī)電路板挡逼。計(jì)算機(jī)根據(jù)這數(shù)值,對(duì)照 ASCII 表(這要看你當(dāng)前系統(tǒng)默認(rèn)是哪種編碼了腻豌。)家坎,根據(jù)畫(huà)出 ‘A’ 的計(jì)算公式,在屏幕上吝梅,涂黑一個(gè)個(gè)像素點(diǎn)虱疏,畫(huà)出圖形‘A’的樣子。至此苏携,你按下 A做瞪,看到了屏幕上的 A。
2.屏幕是怎么顯示出字符 A 右冻?
對(duì)照了ASCII 表后装蓬,到相應(yīng)位置(字庫(kù))取得了字符 A 的圖形矩陣(由傳說(shuō)中的專(zhuān)業(yè)人士事先一個(gè)個(gè)像素畫(huà)好存放在電腦里)衩侥,然后按照A 的形狀一個(gè)個(gè)像素點(diǎn)畫(huà)出 A 來(lái),就像紋身一樣矛物,最終才顯示在屏幕茫死。
- 編碼字符集(也簡(jiǎn)稱(chēng)為 字符集 )
ASCII 表,就是個(gè)編碼字符集(字符集)履羞。它是你和電腦之間的翻譯官峦萎。
字符集們的歷史,想當(dāng)年......
美國(guó)人只用一字節(jié)表示所有的英文字母忆首,有了 ASCII 表爱榔。
1981年,中國(guó)大陸用了幾個(gè)字節(jié)表示了所有中文糙及,有了GB2312 表(兼容了 ASCII)详幽。
1984年,中國(guó)臺(tái)灣多使用繁體字浸锨,發(fā)明了 BIG5 表(兼容了 ASCII)唇聘。
但是 GB2312 明顯是沒(méi)有兼容 BIG5 的,所以柱搜,1985年迟郎,你發(fā)一封郵件給臺(tái)灣的同事,他在電腦上打開(kāi)聪蘸,亂碼宪肖。
因?yàn)樗娔X里沒(méi)有 GB2312 這個(gè)翻譯官。
這樣不行健爬,各地區(qū)交流麻煩控乾。
于是國(guó)際組織發(fā)明一種字符集 Unicode ,包含世界上所有國(guó)家娜遵,地區(qū)的文字蜕衡。
Unicode 字符集,有各種字符編碼魔熏,UTF-8,UTF-16 等衷咽。
Windows 的內(nèi)碼是 Unicode,只要文件能說(shuō)明自己使 用什么編碼蒜绽,用戶又安裝了對(duì)應(yīng)的代碼頁(yè)(字符編碼),Windows 就能正確顯示(呵).桶现。
部分代碼頁(yè)舉例:
932 —日文
936 —簡(jiǎn)體中文(GBK)
949 —韓文
950 —繁體中文(大五碼)
65001 — UTF-8 Unicode
所以躲雅,現(xiàn)在臺(tái)灣同事發(fā)過(guò)來(lái)的文件不會(huì)亂碼了,只要你的 Windows 系統(tǒng)上骡和,有這個(gè) BIG5 的代碼頁(yè)(950)相赁。你可以將系統(tǒng)的當(dāng)前活動(dòng)代碼頁(yè)轉(zhuǎn)換為
BIG5 后相寇,再打開(kāi)文件。
這是系統(tǒng)層面钮科。不過(guò)唤衫,現(xiàn)在很多軟件都支持各種編碼,比如 sublime 绵脯,可以打開(kāi)佳励,然后刷新文件編碼為 BIG5 。就可以了蛆挫。
1.常用做法
在 Python 源代碼文件開(kāi)頭中加上兩句話(雖然前面是#號(hào)赃承,但操作系統(tǒng)認(rèn)的):
#!/usr/bin/env python3
#-*- coding: utf-8 -*- 表示本文檔是要以 utf-8 來(lái)編碼的。這話是說(shuō)給操作系統(tǒng)聽(tīng)的悴侵,因?yàn)槭遣僮飨到y(tǒng)負(fù)責(zé) 存儲(chǔ) 和 讀取 該文檔瞧剖。
2.涉及函數(shù)
數(shù)值與字符轉(zhuǎn)換:
print(ord('我')) 25105 #字符轉(zhuǎn)為整型
print(chr(25105)) 我 #數(shù)值轉(zhuǎn)為字符
字符串長(zhǎng)度:
print(len('ABC')) 3 # 3 個(gè)字符
print(len('我')) 1 # c 一般是兩個(gè)字節(jié)(c 可不管你是幾個(gè)字,實(shí)在地給你算出是幾個(gè)字節(jié))可免。java 也是一抓于,代表一個(gè)字符。
3.閑話
linux 文件是 utf-8 編碼的浇借,而 windows 文件的編碼方式很多(你保存一個(gè) txt 的時(shí)候毡咏,就可見(jiàn)可選的編碼,ANSI , Unicode )逮刨。
當(dāng)然呕缭,我們大家都用 Unicode 并以 utf-8 編碼就最好不過(guò)了,但不可否認(rèn)修己,再好的編碼將來(lái)也會(huì)被更好的替代恢总。而同時(shí),我們不得不做的是睬愤,兼容老版本的編碼片仿。比如,你要和原來(lái)的交易系統(tǒng)聯(lián)調(diào)尤辱,你總不能說(shuō)砂豌,我用的是最新的,你后臺(tái)自己改吧光督,你老大反手一巴掌阳距。。结借。筐摘。有些時(shí)候,舊的已經(jīng)沒(méi)法改了,不是沒(méi)人改咖熟,就是影響太大圃酵,改了,誰(shuí)也收拾不了這亂攤子馍管。陳年代碼郭赐,散發(fā)著無(wú)窮的魅力,令人熱血沸騰确沸,尸骨無(wú)存捌锭。
Python3 就有點(diǎn)特別了哈,它還真的不是這般人张惹,就沒(méi)想著兼容舀锨,要走得快,走得好宛逗,走得大步坎匿。與 python2 脫節(jié)。相信在智能系統(tǒng)上雷激,它能發(fā)揮很重要的作用