“LC_CTYPE”中“en_AU”的相关性是什么? “locale LC_CTYPE”输出是什么?

“LC_CTYPE”中“en_AU”的相关性是什么? “locale LC_CTYPE”输出是什么?

首先:虽然我可以理解 LC_TIME、LC_NUMERIC 和大多数其他 LC_* 变量的地理区域详细信息的相关性,但我不太明白 'en_AU' 与 LC_CTYPE 有何关系......
不是 UTF-8 (并且其他编码)本身就有足够的定义(对于 LC_CTYPE),如和编码根据定义是一致的吗?...

在我写的时候想想,可能世界上不同地区的小写字母大写不同......如果是这样的话,如何iconv处理这个问题?......
iconv一点实际上是我开始写这行的原因我想,因为它不要求区域设置,它只要求输入编码格式。

我的下一个难题是:输出中的行项目指locale LC_CTYPE的是什么,和/或哪里是获得布局的好地方...也许更相关的问题是:此信息将由谁以及在哪里提供需要吗? ..
我很确定我不需要它...但这一切都有助于填写“脚本”、“编码”和“区域设置”的图片;令人惊讶的是不平凡的一旦你离开ASCII 世界

答案1

所有区域变量都使用相同的区域名称,这样您就可以一键指定您喜欢的区域,例如LANG=en_AU.utf8。正如您所猜测的,国家/地区信息有时甚至在 中也是相关的LC_CTYPE,例如 的大写版本在大多数语言中i是,但在土耳其语中() 。但不要期待奇迹;例如,小写字母与大写字母的对应关系是一一对应的,因此 中没有好的大写版本(应该是)。Iİtr_TR.utf8ßde_DE.iso8859-1SS

您将可以更轻松地理解 的输出locale -k LC_CTYPE-k除了值之外还可以查看关键字名称(如果没有-k,输出格式的设计是为了让您可以获得特定关键字的值,例如locale ctype-width)。关键字列表及其含义取决于系统,就像区域设置数据的存储方式一样,并且很多人对此不感兴趣,因此您可能在 C 库源代码之外找不到太多文档。到目前为止,locale 命令最有用的形式是locale -a列出可用的区域设置名称。

为了GNU 库(即非嵌入式Linux):

  • 除消息之外的所有区域设置数据都存储在/usr/lib/locale/locale-archive.该文件是由生成的localedef来自/usr/share/i18n和中的数据/usr/local/share/i18n。我认为,语言环境定义文件的格式/usr/share/i18n/locales仅记录在源代码中。
  • 中的字符集和编码定义文件的格式/usr/share/i18n/charmaps由 POSIX:2001 标准化。这些文件(或者,在GNU 库, ) 中的编译版本/usr/lib/locale/locale-archive图标 编程命令行设施。编码转换也依赖于/usr/lib/gconv/*.so. Gnu libc 手册文档如何编写自己的 gconv 模块,尽管该部分包含文本“此信息应该足以编写新模块。任何这样做的人都应该看看 GNU C 库源代码中的可用源代码。”
  • 消息目录得到特殊对待,因为每个应用程序都有自己的集合。消息目录位于/usr/share/locale/*/LC_MESSAGES.手册包含应用程序编写者的文档。 GNU libc 支持POSIX接口catgets以及更强大的获取文本接口

书面语言确实非常复杂,即使你与英语相差不远。法语和德语是ü同一个字符吗(是“特雷马”“元音变音”,法国和德国的打印机以稍微不同的高度排版重音是否重要)?iİ土耳其语)的大写字母是什么?如果您只有 ASCII(在德语中是),是否会Ö音译为?字典中的排序位置(在瑞典语中,位于 后面)?这只是用拉丁字母书写的欧洲语言的几个例子!这OOEÄZ统一码邮件列表有很多例子,有时还对这些话题进行了激烈的讨论。

相关内容