en_US或en-US,您应该使用哪一个?

How*_*ard 54 java locale localization

假设您要将用户首选项的区域设置存储在数据库中,您将使用哪个值?

en_US或en-US

它们是两个标准,但您更喜欢将哪一个用作自己应用程序的一部分?

更新:似乎许多网站使用破折号而不是下划线,例如

http://zh.wikipedia.org/zh-tw http://www.google.com.hk/search?hl=zh-TW

Mat*_*nen 73

等等,等等.伙计们,我很确定" - "是标准.如果你在某个地方看到"_",那么可能是某些人想出来使它成为有效的标识符.

就个人而言,我会选择" - ",只是为了正确.

http://en.wikipedia.org/wiki/IETF_language_tag

http://tools.ietf.org/html/rfc5646

  • @dkarp使用[Locale#toLanguageTag()](http://docs.oracle.com/javase/7/docs/api/java/util/Locale.html#toLanguageTag())和[Locale#forLanguageTag()]( http://docs.oracle.com/javase/7/docs/api/java/util/Locale.html#forLanguageTag(java.lang.String))可以解决这个问题(虽然在JDK 1.7中). (8认同)
  • @Howard嗯,每次实例化一个`Locale`对象时,你都需要`en_US`格式的语言环境名称.(对于货币格式,日期格式等)以"en-US"格式存储数据并在每次需要使用存储数据时用下划线替换破折号绝对可以*工作*,但它可能更明智(当然更简单)以您的应用程序实际使用的格式存储区域设置名称... (5认同)
  • 是的," - "是标准,即使我使用Java,我也会遵循标准.(http://www.w3.org/TR/html401/struct/dirlang.html) (2认同)

dka*_*arp 24

如果您正在使用Java,那么您也可以使用Java语言环境格式(en_US).

BCP 47文件实际上做指定en-US格式,它只是共同如果不是Java风格语言环境名称更为常见.但实际上你会看到带有下划线的形式.例如,Java大多数POSIX类型平台都使用下划线作为其语言/区域分隔符.

因此,任何一种选择都不会出错.但鉴于您使用Java编写并且可能针对Unix平台,en_US可能还有很长的路要走.


use*_*051 9

在Java 7中,有一种新方法Locale.forLanguageTag(String),它将连字符假定为分隔符.我认为这是规范性的.

有关更多信息,请查看Locale的文档.


Coo*_*ans 6

EN_US.是一个非常有用的读物​​.

  • 澄清一下:否决票不是对您最初的评论或能力的批评,而是对那个特定时刻答案的价值的批评。如果不立即投反对票,我将不得不 1. 添加评论 2. 添加一个提醒,如果没有解决,稍后再投反对票。并且已经有 1 条评论指出链接不正确。 (5认同)
  • 是的,抱歉,因为文章不见了而投反对票。 (3认同)
  • 有一个断开的链接,它应该是一个downvote,你不是吗?无法保证您会回来编辑它.现在重新投票. (3认同)
  • https://web.archive.org/web/20150604051040/http://docs.oracle.com/javase/7/docs/api/java/util/Locale.html (3认同)
  • @ebruchez而不是投票,你可以留下评论,我可以更新链接或删除答案.这是一个2年半的答案.谢谢你抓住它. (2认同)