[oeasy]python0129_unicode_中文字符序號(hào)_十三道大轍_字符編碼解碼_eval_火星文
unicode 中文字符分類
回憶上次內(nèi)容
字符集
從博多碼
到
ascii
再到
iso-8859
系列各自割據(jù)
如何把世界上各種字符統(tǒng)進(jìn)行編碼
unicode
順勢而生不斷進(jìn)化不過字符總量超過了
65536
每個(gè)漢字都有位置
所有漢字里面第一個(gè)漢字是什么呢?
分布
第一個(gè)字就是一
一切本是混沌
河出圖洛出書
一劃開天
分出陰陽
一生二
太極生兩儀
unicode把一放在中文第一個(gè)
感受先人創(chuàng)建文明之源
后面的漢字
分在幾個(gè) blocks 里面
F、B都是16進(jìn)制的數(shù)字就像1、2、3一樣
這個(gè)范圍就是中日韓(CJK)字符的范圍
最常用的在0x4E00-0x9FBF
也屬于 2個(gè)字節(jié) 以內(nèi)
字符數(shù)量也很多
不過由于漢字?jǐn)?shù)量太多
原來給的空間不夠用了
新分空間
又給CJK分配了幾個(gè)擴(kuò)展空間
Extension
我們 對(duì)比一下
原來 \x表示法 和 \u表示法
兩種轉(zhuǎn)義
原來
ascii
字符a
可以用\x61
表示\x61
對(duì)應(yīng)十六進(jìn)制的(61)十六進(jìn)制占用
一
個(gè)字節(jié)使用
\x
進(jìn)行轉(zhuǎn)義現(xiàn)在
unicode
字符一
可以用\u4e00
表示\u4e00
對(duì)應(yīng)十六進(jìn)制的(4e00)十六進(jìn)制占用
兩
個(gè)字節(jié)使用
\u
進(jìn)行轉(zhuǎn)義
ascii 字符也能用
\u
的方式進(jìn)行轉(zhuǎn)義
\u
必須得4位16進(jìn)制數(shù)不過這樣有點(diǎn)浪費(fèi)空間和帶寬
序號(hào)、字節(jié)狀態(tài)和字符是什么關(guān)系呢?
關(guān)系
序號(hào)、字節(jié)狀態(tài)和字符
這三個(gè)東西也構(gòu)成一個(gè)閉環(huán)
就像ascii一樣
我們現(xiàn)在再看一下ord和chr的幫助
ord 和 chr
ord將字符的unicode編碼轉(zhuǎn)化為單字字符串
chr 將[0,0x10ffff] 轉(zhuǎn)化為unicode 單字字符串
序號(hào)是unicode的序號(hào)
在[0,127]范圍內(nèi)
ascii 和 unicode 重合
unicode 兼容 ascii
unicode 形成了主流 之后
會(huì)吸取周圍的小支流
類似的還有辦公文檔的標(biāo)準(zhǔn)
辦公文檔的標(biāo)準(zhǔn)
dos時(shí)代之后
微軟推出了字體處理軟件
win3.1的年代
金山在wps的基礎(chǔ)上推出了盤古系統(tǒng)
win95之后
win95之后
圖形用戶界面都基于微軟的api進(jìn)行開發(fā)
微軟自身也有office系列
客觀上
微軟也就制定了辦公軟件的標(biāo)準(zhǔn)
微軟office系列
wps、中文之星只能按照去兼容它的格式
形成了 主流 之后
失去了定義標(biāo)準(zhǔn)的可能
規(guī)則一旦形成
就會(huì)對(duì)后來的事物產(chǎn)生影響
其實(shí)漢字
也有自己的一套歸類規(guī)則
按照發(fā)音來歸類
可以按照發(fā)音來歸類
甚至可以生成語音...
還可以進(jìn)一步歸類嗎?
韻母歸類
押韻助手
https://yayun.la/
可以用來找到押韻詞匯
十三道大轍
字典用的是拼音排序
按照聲母的順序
大轍按的是韻母
這樣就可以更方便找相同韻母的漢字了
大轍對(duì)應(yīng)十八韻一發(fā)花十八韻的一麻二梭波十八韻的二波三歌三乜斜十八韻的四皆四衣欺十八韻的五支、六兒、七齊五灰堆十八韻的八微六懷來十八韻的九開七姑蘇十八韻的十姑八衣欺十八韻的十一魚九由求十八韻的十二侯十遙條十八韻的十三豪十一言前十八韻的十四寒十二人臣十八韻的十五痕十三汪洋十八韻的十六唐十四中東十八韻的十七庚和十八東
四、八其實(shí)可以合成一道大轍
如果要雙押
就得找詞組韻母一致的
其實(shí)都可以把所有的詞歸類
然后制作一個(gè)押韻神器
很多各種各樣的發(fā)音
進(jìn)行分類
也被所謂的韻
詞是由字組成的
詞是如何編碼進(jìn)入計(jì)算機(jī)的呢?
編碼解碼
兩個(gè)漢字的unicode編碼
占用四個(gè)字節(jié)
已知漢字,得到 unicode 值,叫做編碼
過程為 encode
已知 unicode 值,得到漢字,叫做解碼
過程為 decode
encode decode
把 str 字符串 encode 編碼 為 bytes 字節(jié)序列
把 bytes 字節(jié)序列 decode 解碼 為 str 字符串
編碼和解碼是互為逆運(yùn)算的
繞了一圈又回來了
??
ascii 和 eval
ascii 得到字符串的unicode編碼狀態(tài)
eval 得到編碼的字符串狀態(tài)
這兩個(gè)也是逆運(yùn)算
好像也可以然繞一個(gè)圈
eval應(yīng)該如何理解呢?
eval
help(eval)
eval
意思是evaluate衡量
是一個(gè)內(nèi)置的函數(shù)
在
__builtins__
這個(gè)module里面根據(jù)全局變量和局部變量的值進(jìn)行衡量
按unicode形式的編碼好的字符串
這里衡量的是
實(shí)際編碼的時(shí)候是按照什么排序的呢?
unicode 漢字排序
偏旁部首檢字法
禾木字旁的放到一起
按照偏旁的次序排列
其實(shí)偏門的漢字很多的
偏門的漢字
形成了 小眾火星文
火星文
在火星文轉(zhuǎn)化器中
特嘚孓麥波斯嘚
??妳ィ是俄?xiàng)懥嬇?
嬡莪芣湜沵哋措
團(tuán)萇,莪蓯泚僦湜摋骉特哋亾孒,嬡沵呦。
洳淉嬡,埥堔嬡。
如果愛,請深愛
團(tuán)長,我從此就是殺馬特的人了,愛你呦
愛我不是你的錯(cuò)
你是我的翅膀
today is my birthday
這真的有點(diǎn)亞文化
也會(huì)暈吧?!
用這個(gè)問人工智能
火星文輸入法
其實(shí)火星文就是把常用漢字序號(hào)
文字轉(zhuǎn)化就是找到序號(hào)的映射
和不常用的漢字的序號(hào)
對(duì)應(yīng)了起來
也是一種 加密方法
學(xué)出來也是一頭霧水
你用這語料進(jìn)行深度學(xué)習(xí)
總結(jié)
中文字符可以有各種分類方法
實(shí)際上unicode的排序方法
合轍押韻的分類
拼音檢字法
聲母
韻母
偏旁部首
我們以前勇闖地下城時(shí)候獲得了一把屠龍寶刀
給他鑲上了??寶石
這寶石應(yīng)該如何理解?
我們下次再說!??
藍(lán)橋->https://www.lanqiao.cn/courses/3584
github->https://github.com/overmind1980/oeasy-python-tutorial
gitee->https://gitee.com/overmind1980/oeasypython