背景知识

现代软件开发,往往做出的应用程序不止给一个国家的人去使用。不同国家的人往往存在语言文字不通的问题。由此产生了国际化(internationalization)、多语言(multi-language)、本地化(locale)这些词,它们其实都是一个意思,支持多种语言,提供给不同国家的用户使用。

语言编码、国家/地区编码

做web 开发的朋友可能多多少少接触过类似 zh-cn, en-us 这样的编码字样。

这些编码是用来表示指定的国家地区的语言类型的。那么,这些含有特殊含义的编码是如何产生的呢?

ISO-639标准使用编码定义了国际上常见的语言,每一种语言由两个小写字母表示。

ISO-3166标准使用编码定义了国家/地区,每个国家/地区由两个大写字母表示。

为什么要用语言+国家/地区来标示语言呢?

道理很简单:拿咱们中国来说,同样是中文,全国各地的方言就多如牛毛,更不要说世界上有那么多种语言,得有多少方言?

下表列举了一些常见国家、地区的语言编码:

国家/地区

语言编码

国家/地区

语言编码

简体中文(中国)

zh-cn

繁体中文(台湾地区)

zh-tw

繁体中文(香港)

zh-hk

英语(香港)

en-hk

英语(美国)

en-us

英语(英国)

en-gb

英语(全球)

en-ww

英语(加拿大)

en-ca

英语(澳大利亚)

en-au

英语(爱尔兰)

en-ie

英语(芬兰)

en-fi

芬兰语(芬兰)

fi-fi

英语(丹麦)

en-dk

丹麦语(丹麦)

da-dk

英语(以色列)

en-il

希伯来语(以色列)

he-il

英语(南非)

en-za

英语(印度)

en-in

英语(挪威)

en-no

英语(新加坡)

en-sg

英语(新西兰)

en-nz

英语(印度尼西亚)

en-id

英语(菲律宾)

en-ph

英语(泰国)

en-th

英语(马来西亚)

en-my

英语(阿拉伯)

en-xa

韩文(韩国)

ko-kr

日语(日本)

ja-jp

荷兰语(荷兰)

nl-nl

荷兰语(比利时)

nl-be

葡萄牙语(葡萄牙)

pt-pt

葡萄牙语(巴西)

pt-br

法语(法国)

fr-fr

法语(卢森堡)

fr-lu

法语(瑞士)

fr-ch

法语(比利时)

fr-be

法语(加拿大)

fr-ca

西班牙语(拉丁美洲)

es-la

西班牙语(西班牙)

es-es

西班牙语(阿根廷)

es-ar

西班牙语(美国)

es-us

西班牙语(墨西哥)

es-mx

西班牙语(哥伦比亚)

es-co

西班牙语(波多黎各)

es-pr

德语(德国)

de-de

德语(奥地利)

de-at

德语(瑞士)

de-ch

俄语(俄罗斯)

ru-ru

意大利语(意大利)

it-it

希腊语(希腊)

el-gr

挪威语(挪威)

no-no

匈牙利语(匈牙利)

hu-hu

土耳其语(土耳其)

tr-tr

捷克语(捷克共和国)

cs-cz

斯洛文尼亚语

sl-sl

波兰语(波兰)

pl-pl

瑞典语(瑞典)

sv-se

注:由表中可以看出*语言、国家/**地区* *编码一般都是英文单词的缩写。*

字符编码

在此处,引申一下字符编码的概念。

是不是有了语言、国家/****地区编码,计算机就可以识别各种语言了?

答案是否。作为程序员,相信每个人都会遇到过这样的情况:,期望打印中文,结果输出的却是乱码。

这种情况,往往是因为字符编码的问题。

计算机在设计之初,并没有考虑多个国家,多种不同语言的应用场景。当时定义一种ASCII码,将字母、数字和其他符号编号用7****比特的二进制数来表示。后来,计算机在世界开始普及,为了适应多种文字,出现了多种编码格式,例如中文汉字一般使用的编码格式为GB2312GBK

由此,又产生了一个问题,不同字符编码之间互相无法识别。于是,为了一统江湖,出现了 unicode编码。它为每种语言的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台的文本转换需求。

有人不禁要问,既然 Unicode 可以支持所有语言的字符,那还要其他字符编码做什么

Unicode 有一个缺点:为了支持所有语言的字符,所以它需要用更多位数去表示,比如ASCII表示一个英文字符只需要一个字节,而 Unicode 则需要两个字节。很明显,如果字符数多,这样的效率会很低。

为了解决这个问题,有出现了一些中间格式的字符编码:如UTF-8、UTF-16、UTF-32等。中国程序员一般使用UTF-8编码。

各种系统设置的语言代码

af 南非荷兰语

sq 阿尔巴尼亚语

ar-sa 阿拉伯语(沙特阿拉伯)

ar-iq 阿拉伯语(伊拉克)

ar-eg 阿拉伯语(埃及)

ar-ly 阿拉伯语(利比亚)

ar-dz 阿拉伯语(阿尔及利亚)

ar-ma 阿拉伯语(摩洛哥)

ar-tn 阿拉伯语(突尼斯)

ar-om 阿拉伯语(阿曼)

ar-ye 阿拉伯语(也门)

ar-sy 阿拉伯语(叙利亚)

ar-jo 阿拉伯语(约旦)

ar-lb 阿拉伯语(黎巴嫩)

ar-kw 阿拉伯语(科威特)

ar-ae 阿拉伯语(阿拉伯联合酋长国)

ar-bh 阿拉伯语(巴林)

ar-qa 阿拉伯语(卡塔尔)

eu 巴斯克语

bg 保加利亚语

be 贝劳语

ca 加泰罗尼亚语

zh-tw 中文(中国台湾)

zh-cn 中文(中华人民共和国)

zh-hk 中文(中国香港特别行政区)

zh-sg 中文(新加坡)

hr 克罗地亚语

cs 捷克语

da 丹麦语

nl 荷兰语(标准)

nl-be 荷兰语(比利时)

en 英语

en-us 英语(美国)

en-gb 英语(英国)

en-au 英语(澳大利亚)

en-ca 英语(加拿大)

en-nz 英语(新西兰)

en-ie 英语(爱尔兰)

en-za 英语(南非)

en-jm 英语(牙买加)

en 英语(加勒比)

en-bz 英语(伯利兹)

en-tt 英语(特立尼达)

et 爱沙尼亚语

fo 法罗语

fa 波斯语

fi 芬兰语

fr 法语(标准)

fr-be 法语(比利时)

fr-ca 法语(加拿大)

fr-ch 法语(瑞士)

fr-lu 法语(卢森堡)

gd 盖尔语(苏格兰)

gd-ie 盖尔语(爱尔兰)

de 德语(标准)

de-ch 德语(瑞士)

de-at 德语(奥地利)

de-lu 德语(卢森堡)

de-li 德语(列支敦士登)

el 希腊语

he 希伯来语

hi 北印度语

hu 匈牙利语

is 冰岛语

in 印度尼西亚语

it 意大利语(标准)

it-ch 意大利语(瑞士)

ja 日语

ko 朝鲜语

ko 朝鲜语(韩国)

lv 拉脱维亚语

lt 立陶宛语

mk FYRO 马其顿语

ms 马来西亚语

mt 马耳他语

no 挪威语(博克马尔)

no 挪威语(尼诺斯克)

pl 波兰语

pt-br 葡萄牙语(巴西)

pt 葡萄牙语(葡萄牙)

rm 拉丁语系

ro 罗马尼亚语

ro-mo 罗马尼亚语(摩尔达维亚)

ru 俄语

ru-mo 俄语(摩尔达维亚)

sz 萨摩斯语(拉普兰)

sr 塞尔维亚语(西里尔)

sr 塞尔维亚语(拉丁)

sk 斯洛伐克语

sl 斯洛文尼亚语

sb 索布语

es 西班牙语(西班牙传统)

es-mx 西班牙语(墨西哥)

es 西班牙语(西班牙现代)

es-gt 西班牙语(危地马拉)

es-cr 西班牙语(哥斯达黎加)

es-pa 西班牙语(巴拿马)

es-do 西班牙语(多米尼加共和国)

es-ve 西班牙语(委内瑞拉)

es-co 西班牙语(哥伦比亚)

es-pe 西班牙语(秘鲁)

es-ar 西班牙语(阿根廷)

es-ec 西班牙语(厄瓜多尔)

es-cl 西班牙语(智利)

es-uy 西班牙语(乌拉圭)

es-py 西班牙语(巴拉圭)

es-bo 西班牙语(玻利维亚)

es-sv 西班牙语(萨尔瓦多)

es-hn 西班牙语(洪都拉斯)

es-ni 西班牙语(尼加拉瓜)

es-pr 西班牙语(波多黎各)

sx 苏图语

sv 瑞典语

sv-fi 瑞典语(芬兰)

th 泰语

ts 汤加语

tn 瓦纳语

tr 土耳其语

uk 乌克兰语

ur 乌尔都语

ve 文达语

vi 越南语

xh 科萨语

ji 依地语

zu 祖鲁语

Display Text (English)

Display Text (Localized)

SWITCH Locale

DataKey

Primary URL Pattern

Arabic

Arabic

Arabic

Arabic (AR) [Remove "Middle East and Africa"]

ar_EG

Chinese - Taiwan

中文 - 台彎

Chinese

Chinese (ZH) Simplified

zh_CN

Chinese - China

中文 - 中国

Chinese (Taiwan)

Chinese (ZH) Traditional

zh_TW

Czech

Český

Czech

Czech (CS)

cs_CZ

Danish

Dansk

Danish

Danish (DA)

da_DK

Dutch

Nederlands

Dutch

Dutch (NL)

nl_NL

English - United States

English - United States

English

English (EN) United States

en_US

English - United Kingdom

English - United Kingdom

English (United Kingdom)

English (EN) United Kingdom

en_GB

Finnish

Suomi

Finnish

Finnish (FI)

fi_FI

French - France

Français - France

French

French (FR) France

fr_FR

French - Canada

Français - Canada

French (Canada)

French (FR) Canada

fr_CA

French - Switzerland

Français - Suisse

French (Switzerland)

French (FR) Switzerland

fr_CH

German - Austria

Deutsch - Österreich

German (Austria)

German (DE) Austrian

de_AT

German - Germany

Deutsch - Deutschland

German

German (DE) Germany

de_DE

German - Switzerland

Deutsch - Schweiz

German (Switzerland)

German (DE) Switzerland

de_CH

Greek

Greek

Greek

Greek (EL)

el_GR

Hungarian

Magyar

Hungarian

Hungarian (HU)

hu_HU

Italian

Italiano

Italian

Italian (IT)

it_IT

Japanese

日本語

Japanese (Japan)

Japanese (JA)

ja_JP

Korean

Korean

Korean

Korean (KO)

ko_KR

Norwegian

Norsk

Norwegian

Norwegian (NB)

nb_NO

Polish

Polski

Polish

Polish (PL)

pl_PL

Portuguese - Portugal

Português - Portugal

Portuguese

Portuguese (PT) Portugal

pt_PT

Portuguese - Brazil

Português - Brasil

Protuguese (Brazil)

Portuguese (PT) Brazil

pt_BR

Romanian

Romanian

Romanian

Romanian (RO)

ro_RO

Russian

Russian

Russian

Russian (RU)

ru_RU

Spanish

Español

Spanish (Spain)

Spanish (ES)

es_ES

Swedish

Svenska

Swedish

Swedish (SV) -- Sverige

sv_SE

Thai

Thai

Thai

Thai (TH)

th_TH

Turkish

Türkçe

Turkish

Turkish (TR)

tr_TR

Vietnamese

Vietnamese

Vietnamese

Vietnamese (VN)

国家代号与区号

Countries and Regions

国家或地区

国际域名缩写

电话代码

时差

Angola

安哥拉

AO

244

-7

Afghanistan

阿富汗

AF

93

0

Albania

阿尔巴尼亚

AL

355

-7

Algeria

阿尔及利亚

DZ

213

-8

Andorra

安道尔共和国

AD

376

-8

Anguilla

安圭拉岛

AI

1264

-12

Antigua and Barbuda

安提瓜和巴布达

AG

1268

-12

Argentina

阿根廷

AR

54

-11

Armenia

亚美尼亚

AM

374

-6

Ascension

阿森松

247

-8

Australia

澳大利亚

AU

61

+2

Austria

奥地利

AT

43

-7

Azerbaijan

阿塞拜疆

AZ

994

-5

Bahamas

巴哈马

BS

1242

-13

Bahrain

巴林

BH

973

-5

Bangladesh

孟加拉国

BD

880

-2

Barbados

巴巴多斯

BB

1246

-12

Belarus

白俄罗斯

BY

375

-6

Belgium

比利时

BE

32

-7

Belize

伯利兹

BZ

501

-14

Benin

贝宁

BJ

229

-7

Bermuda Is.

百慕大群岛

BM

1441

-12

Bolivia

玻利维亚

BO

591

-12

Botswana

博茨瓦纳

BW

267

-6

Brazil

巴西

BR

55

-11

Brunei

文莱

BN

673

0

Bulgaria

保加利亚

BG

359

-6

Burkina-faso

布基纳法索

BF

226

-8

Burma

缅甸

MM

95

-1.3

Burundi

布隆迪

BI

257

-6

Cameroon

喀麦隆

CM

237

-7

Canada

加拿大

CA

1

-13

Cayman Is.

开曼群岛

1345

-13

Central African Republic

中非共和国

CF

236

-7

Chad

乍得

TD

235

-7

Chile

智利

CL

56

-13

China

中国

CN

86

0

Colombia

哥伦比亚

CO

57

0

Congo

刚果

CG

242

-7

Cook Is.

库克群岛

CK

682

-18.3

Costa Rica

哥斯达黎加

CR

506

-14

Cuba

古巴

CU

53

-13

Cyprus

塞浦路斯

CY

357

-6

Czech Republic

捷克

CZ

420

-7

Denmark

丹麦

DK

45

-7

Djibouti

吉布提

DJ

253

-5

Dominica Rep.

多米尼加共和国

DO

1890

-13

Ecuador

厄瓜多尔

EC

593

-13

Egypt

埃及

EG

20

-6

EI Salvador

萨尔瓦多

SV

503

-14

Estonia

爱沙尼亚

EE

372

-5

Ethiopia

埃塞俄比亚

ET

251

-5

Fiji

斐济

FJ

679

+4

Finland

芬兰

FI

358

-6

France

法国

FR

33

-8

French Guiana

法属圭亚那

GF

594

-12

Gabon

加蓬

GA

241

-7

Gambia

冈比亚

GM

220

-8

Georgia

格鲁吉亚

GE

995

0

Germany

德国

DE

49

-7

Ghana

加纳

GH

233

-8

Gibraltar

直布罗陀

GI

350

-8

Greece

希腊

GR

30

-6

Grenada

格林纳达

GD

1809

-14

Guam

关岛

GU

1671

+2

Guatemala

危地马拉

GT

502

-14

Guinea

几内亚

GN

224

-8

Guyana

圭亚那

GY

592

-11

Haiti

海地

HT

509

-13

Honduras

洪都拉斯

HN

504

-14

Hongkong

香港

HK

852

0

Hungary

匈牙利

HU

36

-7

Iceland

冰岛

IS

354

-9

India

印度

IN

91

-2.3

Indonesia

印度尼西亚

ID

62

-0.3

Iran

伊朗

IR

98

-4.3

Iraq

伊拉克

IQ

964

-5

Ireland

爱尔兰

IE

353

-4.3

Israel

以色列

IL

972

-6

Italy

意大利

IT

39

-7

Ivory Coast

科特迪瓦

225

-6

Jamaica

牙买加

JM

1876

-12

Japan

日本

JP

81

+1

Jordan

约旦

JO

962

-6

Kampuchea (Cambodia )

柬埔寨

KH

855

-1

Kazakstan

哈萨克斯坦

KZ

327

-5

Kenya

肯尼亚

KE

254

-5

Korea

韩国

KR

82

+1

Kuwait

科威特

KW

965

-5

Kyrgyzstan

吉尔吉斯坦

KG

331

-5

Laos

老挝

LA

856

-1

Latvia

拉脱维亚

LV

371

-5

Lebanon

黎巴嫩

LB

961

-6

Lesotho

莱索托

LS

266

-6

Liberia

利比里亚

LR

231

-8

Libya

利比亚

LY

218

-6

Liechtenstein

列支敦士登

LI

423

-7

Lithuania

立陶宛

LT

370