背景知识
现代软件开发,往往做出的应用程序不止给一个国家的人去使用。不同国家的人往往存在语言文字不通的问题。由此产生了国际化(internationalization)、多语言(multi-language)、本地化(locale)这些词,它们其实都是一个意思,支持多种语言,提供给不同国家的用户使用。
语言编码、国家/地区编码
做web 开发的朋友可能多多少少接触过类似 zh-cn, en-us 这样的编码字样。
这些编码是用来表示指定的国家地区的语言类型的。那么,这些含有特殊含义的编码是如何产生的呢?
ISO-639标准使用编码定义了国际上常见的语言,每一种语言由两个小写字母表示。
ISO-3166标准使用编码定义了国家/地区,每个国家/地区由两个大写字母表示。
为什么要用语言+国家/地区来标示语言呢?
道理很简单:拿咱们中国来说,同样是中文,全国各地的方言就多如牛毛,更不要说世界上有那么多种语言,得有多少方言?
下表列举了一些常见国家、地区的语言编码:
注:由表中可以看出语言、国家/地区 编码一般都是英文单词的缩写。
字符编码
在此处,引申一下字符编码的概念。
是不是有了语言、国家/地区编码,计算机就可以识别各种语言了?
答案是否。作为程序员,相信每个人都会遇到过这样的情况:,期望打印中文,结果输出的却是乱码。
这种情况,往往是因为字符编码的问题。
计算机在设