html标记语言的标准写法-参考自http://www.zhihu.com/question/20797118/answer/16212312

网页头部的声明应该是用 lang="zh" 还是 lang="zh-cn"?

添加评论

查看全部 12 个回答

skydiver ,程序员

5 人赞同

两种写法都可以,看你的需求选择。参考 W3C: Language information and text direction

Briefly, language codes consist of a primary code and a possibly empty series of subcodes:

language-code = primary-code ( "-" subcode )*

Here are some sample language codes:

  • "en": English
  • "en-US": the U.S. version of English.
  • "en-cockney": the Cockney version of English.
  • "i-navajo": the Navajo language spoken by some Native Americans.
  • "x-klingon": The primary tag "x" indicates an experimental language tag

编辑于 2013-02-23 收起评论 感谢

收藏没有帮助举报作者保留权利

更多回答

贺师俊 ,Web开发者

收录于 编辑推荐 •447 人赞同

把我在另一个回答里的评论整理一下搬运过来:

lang属性的取值应该遵循 BCP 47 - Tags for Identifying Languages

单一的 zh 和 zh-CN 均属于废弃用法。


题主要在于,zh
现在不是语言code了,而是macrolang,能作为语言code的是cmn(国语)、yue(粤语)、wuu(吴语)等。我通常建议写成
zh-cmn 而不是光写 cmn,主要是考虑兼容性(至少可匹配 zh),有不少软件和框架还没有据此更新。

zh-CN
的问题还在于,其实多数情况下标记的是简体中文,但是不恰当的使用了地区,这导致同样用简体中文的 zh-SG(新加坡)等无法匹配。更典型的是
zh-TW 和 zh-HK。所以其实应该使用 zh-Hans / zh-Hant 来表示简体和繁体。那么完整的写法就是
zh-cmn-Hans,表示简体中文书写的普通话/国语。一般而言没有必要加地区代码,除非要表示地区特异性,一般是词汇不一样(比如维基百科的大陆简
体和新马简体)。

所以回答题主,两种都不对。

如何标记的例子:

1. 简体中文页面:html lang=zh-cmn-Hans
2. 繁体中文页面:html lang=zh-cmn-Hant
3. 英语页面:html lang=en

4. 《回来》的音频,以国语演唱:audio lang=zh-cmn
5. 《海阔天空》的音频,以粤语演唱:audio lang=yue
6. 《进来白相相》的音频,以沪语演唱:audio lang=wuu
注意上述因为都是音频,所以不应加上 Hans/Hant 标记。

7. 《最终信仰
的音频,双语演唱,因此audio不需要标记lang(如果一定需要标记可以用 lang=mul),但是每个段落的歌词可以分别用 p lang=en
和 p lang=zh-cmn 标记(根据简体或是繁体可用 zh-cmn-Hans 或 zh-cmn-Hant)。
8. 《忐忑》的音频,没有歌词,因此不需要标记lang(如果一定需要标记可用 audio lang=zxx)。

需要加地区代码的情况一般比较少,除非为了强调不同地区汉语使用差异。比如:
<p lang="zh-cmn-Hans">
<b
lang="zh-cmn-Hans-CN">菠萝</b>和<b
lang="zh-cmn-Hant-TW">鳳梨</b>其实是同一种水果。只是大陆和台湾称谓不同,且新马一带的称谓也是不同的,
称之为<b lang="zh-cmn-Hans-SG">黄梨</b>。
</p>
【参考菠萝和凤梨有区别吗?


然,由于历史原因,有时候不得不继续使用zh-CN。比如中文维基百科,沿用了传统的zh-CN/zh-HK/zh-SG/zh-TW(按照标准应该使用

zh-cmn-Hans-CN、zh-cmn-Hant-HK、zh-cmn-Hans-SG、zh-cmn-Hant-TW)。这时候,合理的软件行
为,是将 zh-CN 等转化为 zh-cmn-Hans(即转化为最常见的误用所对应的实际标准写法)。

实际上,各相关标准,也存在一
定的滞后。例如CSS的:lang选择器,不支持选择仅仅简体/繁体中文(而不管是cmn或是yue或是min等汉语方言)。理想情况是CSS3
对:lang选择器的语法进行升级,即BCP 47中的高级匹配算法,支持 :lang(*-Hans)这样的写法。

更新:Selectors Level 4 已经加入了对BCP 47高级匹配算法的支持,即支持 :lang(*-Hans) 的写法。(感谢 @一丝 君。)

编辑于 2014-05-05

38 条评论

感谢

收藏

没有帮助


举报

作者保留权利

猎奇怪蜀黍

,本质骑士认证

207 人赞同

zh 是中文,代表的是宏语言(Macrolanguage),zh
单独用表示中文整体,可以是方言、文言文、简繁体等混合内容,毕竟大陆地区大部分人都能认识不少繁体字,台湾地区大部分人也能认识很多简体字。理论上
zh-CN
表示的是中国大陆中文,包含方言和简繁体,但默认指简体普通话,局限性就体现出来了,没法表达繁体普通话,这时为了精准性,应该用独立语种替换,包括但不
仅限于普通话和七大方言:

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

语言文字标签书写顺序:

language-extlang-script-region-variant-extension-privateuse
语言文字种类-扩展语言文字种类-书写格式-国家和地区-变体-扩展-私有

语言文字标签示例:

language:
fr 法语
es 西班牙语

language-extlang 或 language:
zh-lzh 或 lzh 中文 (文言文)
sgn-csl 或 csl 手语 (中国大陆)

language-region:
zh-CN 中文 (简体, 中国大陆)
en-US 英语 (美国)

language-script:
cmn-Hans 普通话 (简体)
yue-Hant 粤语 (繁体)

language-script-region:
cmn-Hans-CN 普通话 (简体, 中国大陆)
cmn-Hant-TW 普通话 (繁体, 台湾)

language-script-variant:
zh-Latn-pinyin 汉语拼音(例:nǐ,拉丁字母形式)
zh-Bopo-pinyin 注音拼音(例:ㄋ丨ˇ,罗马字形式,中国大陆1958年以前使用,台湾目前使用)

附注:

    1. 以下所有 zh 开头写法已于 2009 年废弃,不推荐使用,请直接去掉 zh- 前缀并使用 cmn、wuu、yue、gan 等 (上述标记已由 2005 年的 extlang 升级到 2009 年的 language,维基百科吴、粤、赣等语言版本均已使用最新的标准写法) 代替即可:

      zh-Hans, zh-Hans-CN, zh-cmn, zh-cmn-Hans, zh-cmn-Hant, zh-wuu, zh-yue, zh-gan
      

      废弃可能原因:在语言学的分类上,中国语言学者多认为吴语、粤语、闽语等是汉语的方言,而西方学者多认为这些语言是一门和汉语同级关系的单独语种。

    2. 以下两种写法均正确,后者描述更精准,但目前浏览器和操作系统都只支持前者,使用新标准可能会造成无法匹配浏览器用户定义字体、网页翻译、程序语言自动切换等功能,前端和码农为了兼容性推荐使用前者:

      zh-CN 中文 (简体, 中国大陆) 对应 cmn-Hans-CN 普通话 (简体, 中国大陆)
      zh-SG 中文 (简体, 新加坡)   对应 cmn-Hans-SG 普通话 (简体, 新加坡)
      zh-HK 中文 (繁体, 香港)     对应 cmn-Hant-HK 普通话 (繁体, 香港)
      zh-MO 中文 (繁体, 澳门)     对应 cmn-Hant-MO 普通话 (繁体, 澳门)
      zh-TW 中文 (繁体, 台湾)     对应 cmn-Hant-TW 普通话 (繁体, 台湾)
      
    3. 同是简体中文页面, 默认或书面语均标记为 cmn 普通话,全文使用地方方言表达时,使用相应语言文字标签标记,例:

      “你” “我们” 用 cmn-Hans 普通话 (简体)
      “侬” “啊啦” 用 wuu-Hans 吴语 (简体)
      “你” “我哋” 用 yue-Hans 粤语 (简体)
      
    4. 一般情况不用 region 选项,但如果要针对特定地区特定用语的友好性,则应设置区域,例 :

      “消息” “黄梨” “自行车” 用 cmn-Hans-SG 普通话 (简体, 新加坡)
      “消息” “菠萝” “自行车” 用 cmn-Hans-CN 普通话 (简体, 中国大陆)
      “消息” “菠蘿” “自行車” 用 cmn-Hant-CN 普通话 (繁体, 中国大陆)
      “訊息” “菠蘿” “单车”   用 cmn-Hant-HK 普通话 (繁体, 香港)
      “訊息” “鳳梨” “腳踏車” 用 cmn-Hant-TW 普通话 (繁体, 台湾)
      
      “analyse” “color” “elevator” 用 en-US 英语 (美国)
      “analyze” “colour” “lift”    用 en-GB 英语 (英国)
      

      参考:

      1. W3C Language tags in HTML and XML
      2. IETF BCP 47 - Tags for Identifying Languages
      3. IANA Language Subtag Registry
时间: 2024-10-14 09:03:02

html标记语言的标准写法-参考自http://www.zhihu.com/question/20797118/answer/16212312的相关文章

Android之Activity的标准写法参考

之前写一些小程序的时候,都是拿来模板就用,没有细究过良好的编码规范,在看GOOGLE原生的例子的时候,发现很多编码规范可以 借鉴,同样以BluetoothChat这个原生工程中的主UI Activity(BluetoothChat.java)来举例吧: 1. 相关控制变量(调试开关)和成员变量的声明: // Debugging private static final String TAG = "BluetoothChat"; private static final boolean

HTML超文本标记语言的介绍

一.概念 1.定义 超级文本标记语言是标准通用标记语言下的一个应用,也是一种规范,一种标准, 它通过标记符号来标记要显示的网页中的各个部分. 简而言之:一种为普通文件中某些字句加上标示的语言,其目的在于运用标记(tag)使文件达到预期的显示效果. 解释:HTML 是在 SGML 定义下的一个描述性语言,或可说 HTML 是 SGML 的一个应用程式,HTML 不是程式语言,如 C++ 和 Java 之类,它只是标示语言,基本上你只要明白了各种 标记的用法便算学懂了 HTML,HTML 的格式非常

html5知识点:超文本标记语言编程

超文本标记语言,标准通用标记语言下的一个应用. "超文本"就是指页面内可以包含图片.链接,甚至音乐.程序等非文字元素. 超文本标记语言的结构包括"头"部分(英语:Head).和"主体"部分(英语:Body),其中"头"部提供关于网页的信息,"主体"部分提供网页的具体内容. 详细介绍 1.由来 万维网上的一个超媒体文档称之为一个页面(外语:page).作为一个组织或者个人在万维网上放置开始点的页面称为主页(外

编程语言 标记语言 脚本语言分别有哪些? 区别是什么?

著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:蔡超凡链接:http://www.zhihu.com/question/22443881/answer/48223449来源:知乎 一.各自的定义标记语言 标记语言,是一种将文本(Text)以及文本相关的其他信息结合起来,展现出关于文档结构和数据处理细节的电脑文字编码.与文本相关的其他信息(包括例如文本的结构和表示信息等)与原来的文本结合在一起,但是使用标记(markup)进行标识. 如:HTML.XML 脚本语言 脚本语

JIRA中的标记语言的语法参考

前言 看到网上有的文章说JIRA是使用Textile这门标记语言,有些语法和Wikitext和Markdown相像.JIRA在2017年进行了一次大更新,某些语法可能和以前不大一样,这里纪录一下常用的一些语法. 标题 h1.一级标题 h2.二级标题 h3.三级标题 h4.四级标题 h5.五级标题 用法示例: h1.ddd 一共有h1到h5这五种大小的标题,但是h6也是有效果的,不过h6起到的作用是将小写字母变成大写字母,示例如下: h6.ddd 以上会得到DDD的输出. 字体 用法 效果 *黑体

关于XML(可扩展标记语言)的基础知识与写法------2017-05-18

XML(Extensible Markup Language) HTML:超文本标记语言,主要用来展示   XML:可扩展标记语言,用来做数据传输XML特点: 1.树状结构,有且只有一个根 2.标签名自定义 3.标签名很敏感,都是双标签元素 4.同一级下不能出现重名标签 例子:用XML来获取login表中的name列: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <tit

关于XML(可扩展标记语言)的基础知识与写法

XML(Extensible Markup Language) HTML:超文本标记语言,主要用来展示   XML:可扩展标记语言,用来做数据传输XML特点:1.树状结构,有且只有一个根2.标签名自定义3.标签名很敏感,都是双标签元素4.同一级下不能出现重名标签 例子:用XML来获取login表中的name列:   <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title

第三章 可扩展标记语言XML

==========================第三章====================== XML(可扩展标记语言)的作用: 用于传输和存储数据的,并且对数据有一定的描述性. 没有预定义标签,用户可以自定义标签. XML最好的描述是:XML 是独立于软件和硬件的信息传输工具.即不依赖于任何软件,没有语言上的问题.任何一个可编辑文本的软件即可编写XML文件. HTML(超文本标记语言)的作用: 用于显示数据. XML的用途: 1.作为应用程序的配置文件 2.作为应用程序的数据源 3.平

Java学习-033-JavaWeb_002 -- 网页标记语言JSP基础知识

JSP 是 Sun 公司提倡的一门网页技术标准.在 HTML 文件中,加入 Java 代码就构成了 JSP 网页,当 Web 服务器访问 JSP 请求的时候,首先执行其中的 Java 程序源码,然后以 HTML 形式返回, Java 程序运行在服务端,最终显示在客户端.JSP 源于 Java,因而 JSP 的运行环境依赖JDK,当然也需要服务器软件(例如 Tomcat 等). 一.运行环境搭建 1.安装 JDK,请参阅之前的博文:Java学习-001-JDK安装配置 2.Tomcat部署及环境变