大家都知道jvm內部的字元都是unicode表示的,但是什麼是unicode捏? 聽我講你知
早在很多年前國際標準化組織(iso)那些夥計們就感覺ascii那200來個字元是不夠用的
所以就想辦法重新編碼 以容納全世界所有的字元
[b]辦法是:用四個位元組表示乙個字元,這個編碼稱之為iso-10646[/b]
你想啊 2的32次方 那字元老多了 有幾百億個吧 手指頭多的可以數數 :lol:
這四個位元組都有個名字
第乙個位元組:組(group)
第二個位元組:面(plane)
第三個位元組:行(row)
第四個位元組:碼(ceil)
眾兄弟們很爽 :d :d
但是好景不長 iso和unicode很快發現了問題:
初衷是要統一編碼 到頭來還是沒統一啊,這不是白忙活了嗎?
於是經過雙方談判 [color=red]unicode加入到iso-10646的0組0面[/color]叫做基本多語言文字面(bmp)
就是說本來2個位元組的unicode也變成了4個位元組
而實際上用兩個位元組就能夠表示出99%的常用字元,專家們當然發現了這個問題
於是出現了utf-16,utf是ucs/unicode transformation format的縮寫
utf-16是這樣表示的
[color=red]bmp字面的字元編碼保持不變,即unicode的編碼(兩個位元組)
其他字面的字元按照一定規則把32位轉換成兩個16位就ok啦
專家就是專家[/color]
注:按照一定規則的目的是避免跟bmp編碼衝突(個人理解)
[b]但是問題總是乙個接著乙個[/b]
當時的計算機只能處理單位元組資料流,怎麼辦呢? 這當然難不倒專家
於是乎 專家有重新[color=red]按照一定規則[/color]來編碼
乙個位元組的utf-8表示 ascii
二個位元組的utf-8表示 。。。
三個位元組的utf-8表示 。。。
四個位元組的utf-8表示 。。。
[b]一句話:無論是乙個位元組還是4個位元組,通過專家們的規則肯定可以轉換成iso-10646編碼,也就能夠表示全世界的的任何字元了[/b]
參考《深入淺出mysql》
深入淺出sizeof
int佔 位元組,short佔 位元組 1.0 回答下列問題 答案在文章末尾 1.sizeof char 2.sizeof a 3.sizeof a 4.strlen a 如果你答對了全部四道題,那麼你可以不用細看下面關於sizeof的論述。如果你答錯了部分題目,那麼就跟著我來一起 關於sizeof...
深入淺出ShellExecute
ipconfig c log.txt應如何處理?二樓的朋友,開啟拔號網路這樣 shellexecute null,open c windows rundll32.exe shell32.dll,control rundll c windows system telephon.cpl null,sw ...
深入淺出ShellExecute
深入淺出shellexecute譯者 徐景周 原作 nishant s q 如何開啟乙個應用程式?shellexecute this m hwnd,open calc.exe sw show 或shellexecute this m hwnd,open notepad.exe c mylog.log...