作者: 車(chē)東 Email: chedongATbigfoot.com/chedongATchedong.com
寫(xiě)于:2002/07 最后更新:02/22/2006 14:42:55
版權(quán)聲明:可以任意轉(zhuǎn)載,轉(zhuǎn)載時(shí)請(qǐng)務(wù)必以超鏈接形式標(biāo)明文章原始出處和作者信息及本聲明
http://www.chedong.com/tech/hello_unicode.Html
要害詞:linux java mutlibyte encoding locale i18n i10n chinese ISO-8859-1 GB2312 BIG5 GBK UNICODE
內(nèi)容摘要:
不知道你有沒(méi)有這樣的感受:為什么php很少有亂碼問(wèn)題而用Java做WEB應(yīng)用卻這么麻煩呢?為什么在Google上能用簡(jiǎn)體中文查到繁體中文,甚至日文的結(jié)果?而且用Google的時(shí)候發(fā)現(xiàn)它居然能自動(dòng)根據(jù)我使用瀏覽器的語(yǔ)言選擇自動(dòng)調(diào)出中文界面?
很多國(guó)際化應(yīng)用的讓我理解了這么一個(gè)道理:Unicode是為更方便的做國(guó)際化應(yīng)用設(shè)計(jì)的,而Java核心的字符是基于UNICODE的,這一機(jī)制為應(yīng)用提供了對(duì)中文“字”的控制(而不是字節(jié))。但假如不仔細(xì)理解其中的規(guī)范,這種自由反而會(huì)成為累贅,從而導(dǎo)致更多的亂碼問(wèn)題:
注重:以下說(shuō)明不是嚴(yán)格定義,一些比喻僅作為方便理解使用。
假設(shè)一個(gè)字符就是棋盤(pán)上的一個(gè)棋子,有其固定的坐標(biāo),假如需要區(qū)別所有的字符,就需要有足夠的棋格容納不同的“字符”。
英文和歐洲其他語(yǔ)言的單字節(jié)字符集(SingleByte Charsets):
首先對(duì)于ISO-8859系列的字符集都想象成一個(gè):2^8 = 16 * 16 = 256個(gè)格子的棋盤(pán),這樣所有的西文字符(英文)用這樣一個(gè)16×16的坐標(biāo)系就基本可以覆蓋全了。而英文實(shí)際上只用其中小于128(/x80)的部分就夠了。利用大于128部分的空間的不同定義規(guī)則形成了真對(duì)其他歐洲語(yǔ)言的擴(kuò)展字符集:ISO-8859-2 ISO-8859-4等……
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注