关于"zh-CN"和"zh-hans"这两个属性,网上的争论一直不断。其实,要使用那种语言,要看的是浏览器支持哪种语言,比如浏览器在请求时会在请求头中加入accept-language,表示浏览器可接受的语言,在浏览器的控制台里可以查看。但是现在部分知名站点都是用的是lang="zh"来表示文档语言,来匹配所有的中文字符。

 其实lang的取值应该遵循BCP 47 - Tags for Identifying Languages,其中"zh-CN"标记为”简体中文“,但是会导致同样使用简体中文的新加坡地区(zh-SG)等无法匹配,比如"zh-TW"、"zh-HK"等等,所以更详细的写法应为"zh-Hans"。

“zh”是中文,代表的是宏语言(Macrolanguage),单独使用表示“中文”整体,可以是方言、文言文、简体、繁体等单独一种,也可以是任意组合的混合内容。“zh-CN”理论上表示的是“中文 (中国大陆)”,因为中国大陆的官方语言是“普通话 (简体)”,所以这个“zh”的局限性就体现出来了:比如“尋尋覓覓,冷冷清清,悽悽慘慘戚戚”,用“zh-CN”描述没法表达出“繁體”和“文言文”,但描述成“zh-TW”则成了“中文 (繁體, 台灣)”,虽然指明了“繁体”,但还是没能体现出“文言文”,同时还丢失了“中国大陆”。针对这种情况,按照 BCP 47 规范 (详见参考链接 2),应该使用独立语种更精确地描述:

cmn 普通话(官话、国语)
wuu 吴语(江浙话、上海话)
czh 徽语(徽州话、严州话、吴语-徽严片)
hak 客家语
yue 粤语(广东话)
nan 闽南语(福建话、台语)
cpx 莆仙话(莆田话、兴化语)
cdo 闽东语
mnp 闽北语
zco 闽中语
gan 赣语(江西话)
hsn 湘语(湖南话)
cjy 晋语(山西话、陕北话)

推荐写法

zh-CN 中文,中国大陆

zh-Hans 中文,普通话

zh-HK 中文,香港

zh-TW 中文,台湾

zh-SG 中文,新加坡

其中zh,zh-CN,zh-SG可作为简体中文标记,zh-HK,zh-TW可作为繁体中文标记。

在浏览器控制台中查看浏览器支持的语言:

查看浏览器支持的语言