表面一套背地一套的不止“陰陽(yáng)合同”,最近,娛樂(lè)圈又出現(xiàn)了新的“陰陽(yáng)話(huà)題”。
【資料圖】
幾天前,#易烊千璽決定放棄入職國(guó)話(huà)#話(huà)題沖上微博熱搜,但是隨后有網(wǎng)友發(fā)現(xiàn),明明是一模一樣的字,自己手動(dòng)打出來(lái)的和上熱搜的竟然不是同一個(gè)話(huà)題。
你是不是也被這段話(huà)搞懵了?
別懷疑,這不是“李逵”和“李鬼”的差別,在微博的默認(rèn)字體下這兩個(gè)話(huà)題一模一樣,根本無(wú)法用肉眼辨認(rèn)。但是在安卓系統(tǒng)下把默認(rèn)字體換掉之后,就能看出熱搜話(huà)題的“入”字不對(duì)勁。也有網(wǎng)友稱(chēng),把兩個(gè)“入”復(fù)制在新華字典APP里,熱搜話(huà)題的“入”查不到,手動(dòng)打出的則能正常查到。
為什么會(huì)出現(xiàn)這種情況?
用python讀取字符代碼之后,可以看到熱搜里的“入”并不是中文常用字里的“入”(U+5165),因此未被字體庫(kù)收錄,連宋體、楷體、黑體等常見(jiàn)字體都沒(méi)有收錄這個(gè)字符,無(wú)論字體怎么變化,它永遠(yuǎn)停留在微軟雅黑字體上。它也不是此前大家猜測(cè)的日文字,它的真身是康熙字典里的偏旁“入”(U+2F0A)。
上圖為康熙字典偏旁“入”,下圖為漢字“入”|Unicode官方
陰陽(yáng)話(huà)題瞞天過(guò)海、一套系統(tǒng)里有兩個(gè)長(zhǎng)相一致的真假“入”字……這些事在互聯(lián)網(wǎng)的歷史上其實(shí)不新鮮,用長(zhǎng)相相似的字符騙用戶(hù)上鉤本身就是騙子們的壓箱底技能。
防不勝防的高仿賬號(hào)
難以區(qū)分的不只有“?(U+2F0A)”和“入(U+5165)”。打開(kāi)Unicode官網(wǎng),單在康熙部首的部分,容易和漢字混淆的字符就有一整頁(yè)。
除此之外,還有很多存在于不同編碼區(qū)的形近字。比如韓國(guó)地區(qū)的一些多音字,在編碼時(shí)與原有的字集是分開(kāi)的,Unicode甚至推出了一個(gè)中日韓兼容表意文字來(lái)囊括這些特例。
看上去和中文是同一個(gè)字,其實(shí)編碼完全不同
這個(gè)編碼方式兼顧了各種語(yǔ)言使用者的習(xí)慣,但帶來(lái)的問(wèn)題也顯而易見(jiàn):在電腦眼里,只要編碼不同,系統(tǒng)就會(huì)認(rèn)為是兩個(gè)完全不一樣的字,而在人類(lèi)使用者看來(lái),這些字符的外觀(guān)完全相同。
這么大的漏洞,騙子當(dāng)然不會(huì)白白放過(guò)。一種名叫同形異義詞攻擊(IDN homograph attack)的網(wǎng)絡(luò)攻擊方法因此而生。早期的騙子通過(guò)用0代替O、用1代替l之類(lèi)的手法來(lái)迷惑用戶(hù),而升級(jí)版的Unicode同型字符換用則直接讓人“瞎眼”。
比如,B站上其實(shí)有兩個(gè)“老師好我叫何同學(xué)”,其中假何同學(xué)的名字中,“老師好”的“老(U+F934)”使用的是中日韓兼容表意文字中的編碼。
左:老(U+8001)師好我叫何同學(xué),右:老(U+F934)師好我叫何同學(xué)。
B站上的“真假”何同學(xué),這堪稱(chēng)像素級(jí)的高仿號(hào),人眼怎么可能認(rèn)出來(lái)啊!| Bilibili
不只漢字遇到了這種問(wèn)題,字母世界里的高仿騙子更離譜。
2017年,一款高仿App出現(xiàn)在谷歌官方的應(yīng)用商店里。它直接偽裝成了知名聊天軟件WhatsApp(相當(dāng)于美國(guó)微信)。開(kāi)發(fā)者在軟件名后面添加了一個(gè)不可見(jiàn)的Unicode字符,讓它看起來(lái)和正規(guī)軟件沒(méi)有區(qū)別。這個(gè)操作直接騙過(guò)了100多萬(wàn)的用戶(hù),讓它成為了最“成功”的惡意軟件之一。
網(wǎng)址也逃不過(guò)“有人模仿我的臉”。隨著國(guó)際化域名開(kāi)放使用Unicode,你看到的“英文”也可能不是英文了!比如www.арр?е.com這個(gè)網(wǎng)址,如果你復(fù)制到瀏覽器里,瀏覽器會(huì)告訴你……
這個(gè)看起來(lái)和蘋(píng)果官方網(wǎng)站一模一樣的網(wǎng)址,是計(jì)算機(jī)愛(ài)好者Xudong Zheng申請(qǐng)的。網(wǎng)址中的а(U+0430)不是英文字母,而是西里爾字母,只要點(diǎn)進(jìn)去就會(huì)進(jìn)入Xudong Zheng的“釣魚(yú)網(wǎng)站”。類(lèi)似的
同形異義詞攻擊也常被用在垃圾郵件和病毒文件里。
“罪魁禍?zhǔn)住盪nicode
然而,這么“不科學(xué)”的Unicode,已經(jīng)是人類(lèi)現(xiàn)階段最通用、最好的字符解決方案。
要讓計(jì)算機(jī)理解人類(lèi)的語(yǔ)言文字,就需要建立人類(lèi)與計(jì)算機(jī)之間相互理解的橋梁,也就是說(shuō)需要一種將字符轉(zhuǎn)換為數(shù)字的編碼方式。
上世紀(jì)60年代,在計(jì)算機(jī)誕生之初,美國(guó)人采用了一種編碼來(lái)表示英語(yǔ)以及各種符號(hào)。該編碼只有一個(gè)字節(jié),能表示256(2^8)個(gè)字符(8個(gè)二進(jìn)制數(shù)),雖然只定義了128個(gè)字符,但已經(jīng)足夠涵蓋大小寫(xiě)英文字母和一些常用符號(hào),這就是大名鼎鼎的ASCII編碼。
1972年之前使用的ASCII編碼表,當(dāng)時(shí)的電腦只認(rèn)得這些字|wikipedia
然而隨著計(jì)算機(jī)技術(shù)的發(fā)展,單純的英文字符逐漸不夠用了。漢語(yǔ)、法語(yǔ)、日語(yǔ)等各種語(yǔ)言的需求增加,每種新語(yǔ)言都需要新的字符。于是每個(gè)國(guó)家也都紛紛著手創(chuàng)建自己的編碼方案,比如我國(guó)的GB 2312、GBK。
不同的國(guó)家和地區(qū)各自使用不同編碼的結(jié)果,就是計(jì)算機(jī)每次都要安裝不同的解碼軟件,一旦出現(xiàn)解碼錯(cuò)誤,用戶(hù)就只能看到一堆亂碼。
一些讓人頭大的亂碼,網(wǎng)上沖浪夠久總能見(jiàn)到
這時(shí)候,一些國(guó)際組織開(kāi)始擬定統(tǒng)一的字符編碼方案,為每種語(yǔ)言中的每個(gè)字符設(shè)定唯一的二進(jìn)制編碼,以滿(mǎn)足跨語(yǔ)言、跨平臺(tái)進(jìn)行文本轉(zhuǎn)換、處理的要求,Unicode就是這么誕生的。在這種語(yǔ)言環(huán)境下,不需要再對(duì)文件進(jìn)行單獨(dú)解碼,同屏里可以顯示任何語(yǔ)言的內(nèi)容。
Unicode用數(shù)字0-0x10FFFF來(lái)映射這些字符,最多可以容納1114112個(gè)字符,或者說(shuō)有1114112個(gè)碼位。碼位就是可以分配給字符的數(shù)字。UTF-8、UTF-16、UTF-32都是將數(shù)字轉(zhuǎn)換到程序數(shù)據(jù)的編碼方案。將字符轉(zhuǎn)換為數(shù)字、字符編碼可以簡(jiǎn)單理解為,
將每個(gè)字符分配給一個(gè)數(shù)字
,例如:a = 65,A = 97。如果這個(gè)編碼是統(tǒng)一的,那全世界所有的計(jì)算機(jī)就都可以認(rèn)識(shí)這些字符。
我們已經(jīng)給每個(gè)字符分配了一個(gè)唯一的編碼,那么如何使計(jì)算機(jī)認(rèn)識(shí)這個(gè)編碼呢?由于計(jì)算機(jī)只懂得0、1這樣的二進(jìn)制,最簡(jiǎn)單的方式就是直接將編碼轉(zhuǎn)換成2進(jìn)制,例如:It’s 果殼的Unicode編碼如下:
其對(duì)應(yīng)的二進(jìn)制為:
1991年Unicode發(fā)布之初,一共只支持7161個(gè)字符,雖然已經(jīng)比128個(gè)ASCII編碼多了不少,但仍然不足以滿(mǎn)足全球用戶(hù)的需求。在接下來(lái)的幾十年里Unicode不斷迭代,支持的語(yǔ)言更多,數(shù)量也激增至14萬(wàn)個(gè),其中不僅有緬甸文、藏文這樣經(jīng)常被我們拿來(lái)做表情包的字符,甚至還包括麻將、易經(jīng)卦象、多米諾骨牌牌面這樣的非語(yǔ)言符號(hào)。
在添加Unicode時(shí),需要秉承“統(tǒng)一性(Unification)”的準(zhǔn)入原則,即把不同語(yǔ)言的同一書(shū)寫(xiě)系統(tǒng)(scripts)中相同的字符統(tǒng)一起來(lái),因此中日韓文中相同的漢字的編碼是一致的。但與此同時(shí),豐富的語(yǔ)言中也包含著大量的形近字,比如西里爾字母中的一些字符就和英文字母高度相似,真的沒(méi)什么好方法辨認(rèn),只能查看代碼。
西里爾字母表|wikipedia
借我借我一雙慧眼吧
雖然那英借來(lái)的慧眼不一定能幫上什么忙,但我們還是能用一些別的方法看破真相。
對(duì)于用Unicode渾水摸魚(yú)的“冒牌”網(wǎng)站,各家瀏覽器已經(jīng)開(kāi)始將網(wǎng)址轉(zhuǎn)換為統(tǒng)一的Ponycode代碼進(jìn)行顯示了。而且對(duì)于這種高仿網(wǎng)站,瀏覽器自身也有了相應(yīng)的比對(duì)和審核方法,并及時(shí)提醒用戶(hù)可能存在的風(fēng)險(xiǎn)。
瀏覽器會(huì)將Unicode字符轉(zhuǎn)換為統(tǒng)一的編碼,在一定程度上抵抗釣魚(yú)網(wǎng)站
對(duì)于高仿賬號(hào)和頁(yè)面上顯示的文字,通過(guò)改變字體也可以快速找到貓膩。Unicode本身并不代表任何字體,最終文字的顯示效果和系統(tǒng)的呈現(xiàn)方式有很大關(guān)系。因此,有些字體只會(huì)顯示Unicode中的部分字符,那些沒(méi)有適配的文字就會(huì)顯得很不一樣。
字體改為楷體時(shí),第二個(gè)老字明顯不一樣了
不過(guò)換字體這一招也不是百試百靈。目前有很多網(wǎng)站為了統(tǒng)一風(fēng)格,會(huì)在代碼中指定顯示的字體,不受用戶(hù)改變自己系統(tǒng)字體的影響。所以遇到可疑的情況,最根本的方法還是得把文字復(fù)制下來(lái),查詢(xún)Unicode編碼。
用python3可以很簡(jiǎn)單地查到一個(gè)字符的Unicode編碼,如下面的代碼所示:
這段代碼可以通過(guò)四個(gè)步驟來(lái)進(jìn)行:
環(huán)境準(zhǔn)備。打開(kāi)電腦自帶的Terminal,輸入python3+回車(chē),即可進(jìn)入python交互環(huán)境,就可以開(kāi)始寫(xiě)代碼啦。
變量賦值。將想要查詢(xún)的字符給到變量s,例如我們想查詢(xún)“老”這個(gè)字符的Unicode編碼,就輸入s = "老"。
Unicode編碼查詢(xún)。Python內(nèi)置的encode函數(shù)可以用來(lái)查詢(xún)Unicode碼,在encode函數(shù)的參數(shù)中輸入"unicode_escape",代表我們想要查詢(xún)的編碼類(lèi)型是Unicode。輸入re = s.encode("unicode_escape"),就可以調(diào)取編碼。
最后輸入print(re),就可以看到字符的Unicode碼,對(duì)比任意兩個(gè)字符的編碼是否一致。
希望大家面對(duì)所謂的“陰陽(yáng)熱搜”不再困惑,在Unicode騙局面前用技術(shù)工具保護(hù)自己!
關(guān)鍵詞: unicode
網(wǎng)站首頁(yè) |網(wǎng)站簡(jiǎn)介 | 關(guān)于我們 | 廣告業(yè)務(wù) | 投稿信箱
Copyright © 2000-2020 www.xnbt.net All Rights Reserved.
中國(guó)網(wǎng)絡(luò)消費(fèi)網(wǎng) 版權(quán)所有 未經(jīng)書(shū)面授權(quán) 不得復(fù)制或建立鏡像
聯(lián)系郵箱:920 891 263@qq.com
主站蜘蛛池模板: 444kkk视频在线观看国产| zooslook欧美另类最新| 美女把尿口扒开让男人桶| 翁熄合h| 亚洲精品社区| 国产va免费精品高清在线| 久草网在线| 波多野结衣女教师在线观看 | 妞干网手机视频| 日韩免费三级电影| 91香蕉国产线观看免| 玉蒲团之天下第一| 久久综合一本| 性久久久久久久| 中文理论片| 日本里番全彩acg里番下拉式| 日本老熟老太hd| 国产一级片在线| 国产精品爽爽va在线观看网站| 玖玖色资源站| 日韩精品一区二区三区中文| 爱情岛亚洲论坛在线观看| 欧美猛交| 欧美日韩一级二级三级| 美女被羞羞在线观看| 777奇米四色米奇影院在线播放| 男人桶女人j的视频在线观看| 成人免费视频观看无遮挡| 日本三级午夜理伦三级三| 在线视频这里只有精品| 免费大片av手机看片| 国内一级纶理片免费| 夜月高清免费在线观看| 亚洲视频免费看| 精品1州区2区3区4区产品乱码 | 操大逼片| 北条麻妃在线一区二区| 黄色片三| 国产亚洲精品拍拍拍拍拍| 麻豆福利视频| 日韩视频一区|