ZBLOG

国家语言代码 "en-US"、“zh_CN”,里面的分隔符怎么即有"_",又有"-"?

语言代码中的分隔符使用 ”-””_” 是由不同标准或历史惯例决定的,主要涉及以下两个规范:


1. ISO 639-1 (语言代码) + ISO 3166-1 (国家/地区代码)

  • 格式语言代码-国家代码(用连字符 - 分隔)
    • 例如:en-US(英语-美国)、zh-CN(中文-中国)。
  • 来源:遵循 IETF(互联网工程任务组)的 BCP 47 标准,这是现代Web和国际化开发中的主流规范。
  • 常见场景:HTTP头、HTML标签、操作系统API(如Linux/Windows本地化配置)、编程语言库(如Java的Locale类)。

2. Unix/Linux 系统的传统环境变量

  • 格式语言_国家.编码(用下划线 _ 分隔)
    • 例如:zh_CN.UTF-8en_US.ISO-8859-1
  • 来源:早期Unix系统(如POSIX标准)的环境变量命名习惯,用于设置本地化参数(如LANG, LC_ALL)。
  • 常见场景:Linux/Unix系统的命令行环境、服务器配置。

为什么两种形式并存?

  1. 历史兼容性
    • Unix系统使用 _ 的传统延续至今,而Web和国际化标准更倾向于 -
  2. 标准差异
    • BCP 47(现代Web标准)明确要求用 -,而POSIX规范沿用 _.
  3. 实际应用中的灵活性
    • 大多数现代框架和库能自动识别两种格式(如JavaScript的Intl API、Python的locale模块)。

如何选择?

场景 推荐格式 示例
Web开发、HTTP头部 zh-CN, en-US HTML的 <html lang="zh-CN">
Linux系统环境变量 zh_CN.UTF-8. export LANG=zh_CN.UTF-8
Java/Python等编程语言库 通常兼容两者 Java: new Locale("zh", "CN")

若需进一步标准化处理,可以使用工具库(如JavaScript的RFC 5646解析器),或在代码中显式转换分隔符。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=23320

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?