知乎專欄 | 多維度架構 | 微信號 netkiller-ebook | QQ群:128659835 請註明“讀者” |
在開始具體介紹之前,需要先介紹幾個術語:
i18n: 就是internationalization, 國際化,由於首字母"i"和末尾字母"n"間有18個字元,所以簡稱i18n. internationalization指為了使應用程序能適應不同的語言和地區間的變化而不作系統性的變化改採取的設計措施。
l10n: 就是localization, 本地化,由於首字母"l"和末尾字母"n"間有10個字母,所以簡稱l10n. localization指為了使應用軟件能夠在某一特定語言環境或地區使用而加入本地特殊化部件和翻譯後文本的過程。
locale: 簡單來說是指語言和區域進行特殊組合的一個標誌,如:en-us, zh-cn, zh-tw
l10n有很多歷史遺留問題,l10n目前已經被i18n取代。
我自己曾經使用過下面四種方式實現語言包
定義一個數組
使用資料庫
使用檔案
使用資料結構
相比幾年前,目前各種語言對UTF-8支持都比較好。
在BBS上常常看到一些網友抱怨UTF-8出現“亂碼”問題,讓我們看看都有哪些地方涉及編碼問題。
用戶輸入法->IDE開發環境,瀏覽器->web容器->資料庫
任何一個環節出現問題有可能出現問題
首先是輸入法,早期輸入法可能是GB2312或GBK。
其次是IDE開發環境,當你創建一個空檔案時,它的已經具備某種編碼,一般外國開發工具預設是acsii,這一點我認為Dreamware做的最好,可以隨時切換編碼。
瀏覽器現在基本不用擔心
web容器apache 2.x對unicode支持很好,tomcat本身機器碼就是unicode。
資料庫問題也不大,PostgreSQL相比MySQL對Unicode支持也早,也比較好。MySQL這方面有點複雜。
提示 | |
---|---|
如果你不考慮使用Unicode並且想支持繁體和簡體中文,你可以使用GBK,但我建議你使用GB18030。 Unicode不是最好的選擇,它占用三個位元組,數據量較大,選擇適合你的編碼,如果你是英文網站,請使用ISO-8859-1,如果是簡體中文,請使用GB2312 |