如何确定java中语言环境的字母表?

时间:2009-01-06 17:13:44

标签: java locale character-encoding

我想确定给定语言环境的 alphabet 是什么,最好是基于浏览器Accept-Language标头值。有人知道怎么做,必要时使用图书馆吗?

5 个答案:

答案 0 :(得分:5)

看看[LocaleData.getExemplarSet] [1]

例如对于english,这将返回abcdefghijklmnopqrstuvwxyz

[1]:http://icu-project.org/apiref/icu4j/com/ibm/icu/util/LocaleData.html#getExemplarSet(com.ibm.icu.util.ULocale,int)

答案 1 :(得分:1)

如果您只想知道用户区域设置的相应字符集的名称,那么您可以尝试nio.CharSet类。

如果你真的想使用Accept-Language标题,那么在这个问题上有一个旧的O'Reilly article,它引入了一个非常方便的类LanguageNegotiator

我认为其中一个会给你足够好的开始。

答案 2 :(得分:1)

这取决于你想要的具体方式。要查看的地方是IANA language registry中的“Suppress-Script”属性。

某些语言有多个可用于书写的“字母”。例如,阿塞拜疆语可以用拉丁文或阿拉伯文写成。大多数语言,如英语,几乎只用一个脚本编写,所以正确的脚本不言而喻,应该在语言代码中被“抑制”。

所以,看看俄语的条目,你可以看出首选的剧本是西里尔语,而对于埃塞俄比亚语,它是阿姆哈拉语。但德语,挪威语和英语并不比“拉丁语”更具体。所以,通过这种方法,你很难从美国人那里隐藏变形金刚和荆棘,或者向克什米尔作家提供任何剧本。

答案 3 :(得分:1)

这是用Århus写的英文答案。昨天,我听到一些德国人说'Blödheit,propos propos,ist dumm'。然而,其中一个人穿着一件上衣说“我知道文字和العربية之间的区别”。

您对本文的问题的答案是什么?是允许的吗?这不是英文文本吗?

答案 4 :(得分:0)

International Components for Unicode可能对此有所帮助。具体而言,UScript类看起来很有希望。

出于好奇:你需要什么?