[oeasy]python0133_[趣味拓展]好玩的unicode字符_另類字符_上下顛倒英文字符
另類字符
回憶上次內(nèi)容
上次再次輸出了大紅心<span style="font-size:64px;color:red">?</span>
找到了紅心對應(yīng)的編碼
黑紅梅方都對應(yīng)有編碼
原來的編碼叫做 ascii?
\u
這種新的編碼方式叫unicode包括了 中日韓字符集等 各書寫系統(tǒng)的字符集
除了這些常規(guī)字符之外
還有什么好玩的東西呢?
顛倒字符
這個(gè)網(wǎng)站可以把文字上下顛倒
https://www.upsidedowntext.com/
這些顛倒字符的編碼多少呢?
自己試試
嘗試
序號還是比較靠前的
應(yīng)該是一些拉丁字符
類似的還有帶圈圈的英文字符
帶圈字符
https://www.bubbleballtext.com/
帶上圈圈之后
給人一種???的感覺
這些都是誰規(guī)定的呢?
繼續(xù)探索
unicode 其實(shí)有個(gè)委員會(huì)
各種大廠都在里面指定標(biāo)準(zhǔn)
我們也可以訪問 unicode.org
具體的編碼字符都可以在里面找
煉金術(shù)師的符號
https://www.zifu123.cn/unicode/Alchemical/index.htm
古代字符編碼
埃及圣書體
https://www.zifu123.cn/unicode/Egyptian_Hieroglyphs/index.htm
腓尼基楔形文字
https://www.zifu123.cn/unicode/Early_Dynastic_Cuneiform/index.htm
回憶起拉丁字符走過的路
拉丁字符之路
時(shí)間相關(guān)
這個(gè)編碼可以解決
等寬
的問題而且還有漢字
目前大多數(shù)字體支持
????????????
???????????????????????????????
?????????????????????????
貨幣相關(guān)
音樂相關(guān)
中文字符
這些編碼實(shí)在是偏門
亞文化
不過很有趣
目前大多數(shù)字庫文件還不支持
不知道這些參與 unicode 編碼規(guī)則制定的大公司在想些什么?
撲克編碼
我們以前介紹過黑紅梅方的編碼
配合數(shù)字可以做出撲克效果
這個(gè)編碼直接就是牌
C 是騎士牌(knight card)
我們一般都是 54 張牌
目前大多數(shù)字符庫還不支持 unicode 這個(gè)編碼段的部分
支持了之后就可以直接字符打牌了
國際象棋
目前大多數(shù)字體不支持
麻將
中式麻將牌在這里
紅紅火火
梅蘭竹菊 春夏秋冬 就連百搭都有
以后用戶名也許可以用麻將字符了
九筒
??????????????
??????????????????
??????????????????
??????????????????
不過目前多數(shù)字庫還不支持
各種符號
符號還在不斷添加中
新的符號
各種雜項(xiàng)費(fèi)用還是很多的甚至包含 emoji
這些新增的字符除了好玩之外
也會(huì)對于我們產(chǎn)生影響
其實(shí)我們也有這種符號
五岳真形圖
也許有一天unicode中會(huì)出現(xiàn)五岳的符號
還有一些同型不同序號的字
易混淆文字
這兩個(gè)文字非常相像但卻是兩個(gè)不同的字符
第1個(gè)是常用的
第2個(gè)是1999年更新中新加進(jìn)去的康熙部首
這種長相類似的字符有什么用么?
陰陽話題
作為計(jì)算機(jī)理解這就是兩個(gè)詞條
這是公關(guān)降熱度的一個(gè)手法
部首
還有什么類似的字符嗎?
康熙部首
2F00-2FD5
擴(kuò)展部首
2E80-2EF3
如果當(dāng)前系統(tǒng)不認(rèn)識這個(gè)字符
怎么辦呢?
不識別
但是如果發(fā)送過來的字符
在當(dāng)前的系統(tǒng)中沒有對應(yīng)的字符
應(yīng)該怎么辦呢?
?
發(fā)過來一個(gè)不認(rèn)識的字符
機(jī)器就傻了
因?yàn)椴恢廊绾伪憩F(xiàn)
于是他會(huì)用一個(gè)問號對應(yīng)的字符進(jìn)行替換
U+FFFD ?
這個(gè)字符本應(yīng)該是 unicode 中的字符
但如果硬要用 gbk 解碼會(huì)如何呢?
亂解碼
? 對應(yīng) utf-16 編碼 0xFFFD
轉(zhuǎn)化為 utf-8 對應(yīng) 0xEF 0xBF 0xBD
但是如果這個(gè)編碼用 gbk 解碼的話
就會(huì)出現(xiàn)錕斤拷
錕(0xEFBF)
斤(0xBDEF)
拷(0xBFBD)
錕斤拷會(huì)出現(xiàn)在各種地方
甚至有個(gè)笑話
手持兩把錕斤拷
口中疾呼燙燙燙
燙燙燙又是怎么回事
燙燙燙和屯屯屯
0xcc 正好是
x86指令集中 中斷(int 3)指令
起到保護(hù)作用
在分配內(nèi)存的時(shí)候
棧內(nèi)存默認(rèn)初始數(shù)值為 0xcc
0xcccc 用使用 bgk 的終端來表示剛好就是
燙
未初始化的??臻g用 0xcc 填充
而未初始化的堆空間用 0xcd 填充
所以 0xcdcd 用 gbk 來解釋的話,就是
屯
動(dòng)態(tài)分配的內(nèi)存被回收之后
對應(yīng)漢字
葺
就是 DDDD
0xcdcd
在gbk編碼格式中
甚至有拼音標(biāo)號
拼音標(biāo)號
https://www.zalgotextgenerator.com/
符號還在不斷增加中
中文字符集進(jìn)化
unicode 如果 2 個(gè)字節(jié)總共 16 位
16 位最多 65536 各字符
想要把全世界的字符都編碼是不現(xiàn)實(shí)的
光是中文就超了好幾次
如果使用 3 字節(jié)編碼就大大增加了存儲(chǔ)和帶寬的壓力
那到底應(yīng)該怎么辦呢?
到底應(yīng)該按照 1 字節(jié)、2 字節(jié)還是 3 字節(jié)進(jìn)行讀取呢?
總結(jié)
unicode 里面有各種字體
撲克
國際象棋
麻將
偏旁部首
各種好玩的編碼
字符編碼就是這樣一步步發(fā)展過來的
但是有個(gè)問題
拜這個(gè)字
在字節(jié)中應(yīng)該是b"\x62\xdc"兩個(gè)字節(jié)
該如何理解b"\x62\xdc"這兩個(gè)字節(jié)呢???
究竟是"拜"
還是"bü"呢?
我們下次再說!??
藍(lán)橋->https://www.lanqiao.cn/courses/3584
github->https://github.com/overmind1980/oeasy-python-tutorial
gitee->https://gitee.com/overmind1980/oeasypython