Home | 简体中文 | 繁体中文 | 杂文 | 打赏(Donations) | ITEYE 博客 | OSChina 博客 | Facebook | Linkedin | 知乎专栏 | Search | About

15.11. 国际化 Locale database。

在开始具体介绍之前,需要先介绍几个术语:

l10n有很多历史遗留问题,l10n目前已经被i18n取代。

我自己曾经使用过下面四种方式实现语言包

  1. 定义一个数组

  2. 使用数据库

  3. 使用文件

  4. 使用数据结构

15.11.1. Unicode

相比几年前,目前各种语言对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

15.11.2. 繁简转换

方案1: User -> Squid ->Web Server

修改squid源码,加入iconv(big5,gb2312,html page)

e.g.1 user (gb.example.org) -> Squid (big5->gb2312) -> web server
e.g.2 user (big5.example.org) -> Squid (gb2312->big5) -> web server