關(guān)于生僻字亂碼的問題

   這個事情說來話長,先從2010年之前的各種上戶口問題,以及各種民生系統(tǒng)問題說起吧谋减。
那個時候總是出現(xiàn)一些行為,說的是扫沼,誰的名字有生僻字上不了戶口出爹,用其他的字代替了,
出現(xiàn)了很多那種在族譜上是一個名字缎除,戶籍部門一個名字這種奇怪的現(xiàn)象严就。
      這個事情我們從軟件開發(fā)的角度來談?wù)劊瑸槭裁凑f是2010年內(nèi)器罐,我猜想哦梢为,這些軟件使用
的是MySQL,也許不一定可能是oracle轰坊。但是涉及到國家安全的問題我覺得MySQL的概率或
者是基于MySQL進行國產(chǎn)化的一些數(shù)據(jù)庫铸董。這個涉及到MySQL的歷史
        回到2002年,如果用戶可以保證表中的每一行具有相同的字節(jié)數(shù)肴沫,MySQL就可以提高用
戶的速度粟害。為了得到這個提升,用戶就需要定義保存文字的列為“CHAR”颤芬。一個“CHAR”列總是
擁有相同的字符數(shù)悲幅。如果存入的字符較少則會在最后補齊空白。如果存入的數(shù)據(jù)過多則會被拋
棄多余的字符站蝠。
        當(dāng)MySQL的開發(fā)者第一次嘗試以6字節(jié)每字符實現(xiàn)UTF-8時汰具,他們意識到CHAR(1)的列會
占用6字節(jié),CHAR(2)會占用12字節(jié)沉衣,以此類推郁副。
        顯而易見的是,這個沒有被使用的實現(xiàn)方式是正確的豌习,任何一個理解UTF-8的開發(fā)者將會
認(rèn)同這一點存谎。
        我的猜測是:MySQL的開發(fā)者違背了“utf8”編碼去幫助那些1)試圖去優(yōu)化空間和速度的人拔疚,
2)嘗試優(yōu)化空間和速度失敗的人。
        這是個無人獲益的改動既荚。那些想要更快性能稚失,更小空間的得到的依然是比他們曾經(jīng)使用
版本更大更慢的實現(xiàn),而那些想要正確的“utf8”的人得到的是個“”都存儲不了的實現(xiàn)恰聘。
        MySQL發(fā)布了這個錯誤的版本后句各,在也沒有修復(fù)它:因為那樣很多使用者將被迫重建他
們的數(shù)據(jù)庫。MySQL最終在2010年更新了一個以“utf8mb4”命名的UTF-8實現(xiàn)晴叨。

對于MySQL數(shù)據(jù)庫我們該怎么設(shè)計呢凿宾,我認(rèn)為的字符編碼最好是utf-8mb4
(1)惠呼、GBK包含全部中文字符葛菇;
(2)摩钙、 UTF-8則包含全世界所有國家需要用到的字符涌献。
(3)凯沪、utf8mb4專門用來兼容四字節(jié)的unicode棠枉。utf8mb4是utf8的超集潦闲,除了將編碼改為utf8mb4外不需要做其他轉(zhuǎn)換乡革。

安照上述說明可得知Emoji 表情(Emoji 表情是一種特殊的unicode)牵啦、生僻漢字亚情。等等都應(yīng)該在utf8mb4編碼里面了。所以我們在數(shù)據(jù)庫層面解決了字符表情生僻字的問題

那對于html顯示呢哈雏,我們該怎么設(shè)計內(nèi)楞件。
1、理論上代碼是utf-8編碼顯示是不是問題的僧著,html是可識別的(此處的utf-8和數(shù)據(jù)的utf-8不一樣履因,注意哈)
2、實際情況是數(shù)據(jù)庫取出來debug打印沒有問題可以顯示盹愚,但是放到html就有問題顯示出來的是一個方框
這個問題主要是字體庫的問題栅迄,系統(tǒng)默認(rèn)使用的是微軟雅黑微軟雅黑是沒有生僻字和圖標(biāo)字體的
我們只要在css樣式里面引入宋體simsun就行如

body{font:14px Helvetica Neue,Tahoma,Arial,sans-serif,simsun}

那PHP編碼轉(zhuǎn)化我們該怎么使用呢

 mb_convert_encoding("?昊","GBK","UTF-8");
 iconv("UTF-8","gbk//IGNORE","?昊"); 

看看兩個的區(qū)別iconv出來出來?是亂碼,而mb_convert_encoding處理出來是正常的皆怕,這個提現(xiàn)在編碼轉(zhuǎn)換的用法上毅舆。

總結(jié)現(xiàn)在的編碼轉(zhuǎn)換中文的有好幾個版本涉及到姓名的建議使用最新的國標(biāo)編碼
GB18030 > GBK > GB2312
GB18030 的是最全的編碼,轉(zhuǎn)化的話使用mb_convert_encoding("?昊","GB18030","UTF-8");效果應(yīng)該是最好的愈腾,即使你這輩子一次沒有見過憋活,只有那些專家看過的字你也能轉(zhuǎn)化識別出來。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末虱黄,一起剝皮案震驚了整個濱河市悦即,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖辜梳,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件粱甫,死亡現(xiàn)場離奇詭異,居然都是意外死亡作瞄,警方通過查閱死者的電腦和手機茶宵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宗挥,“玉大人乌庶,你說我怎么就攤上這事∑豕ⅲ” “怎么了瞒大?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長搪桂。 經(jīng)常有香客問我糠赦,道長,這世上最難降的妖魔是什么锅棕? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮淌山,結(jié)果婚禮上裸燎,老公的妹妹穿的比我還像新娘。我一直安慰自己泼疑,他們只是感情好德绿,可當(dāng)我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著退渗,像睡著了一般移稳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上会油,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天个粱,我揣著相機與錄音,去河邊找鬼翻翩。 笑死都许,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的嫂冻。 我是一名探鬼主播胶征,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼桨仿!你這毒婦竟也來了睛低?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎钱雷,沒想到半個月后骂铁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡急波,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年从铲,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片澄暮。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡名段,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出泣懊,到底是詐尸還是另有隱情伸辟,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布馍刮,位于F島的核電站信夫,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏卡啰。R本人自食惡果不足惜静稻,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望匈辱。 院中可真熱鬧振湾,春花似錦、人聲如沸亡脸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽浅碾。三九已至大州,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間垂谢,已是汗流浹背厦画。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留滥朱,地道東北人苛白。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像焚虱,于是被迫代替她去往敵國和親购裙。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容