我正在尝试编写一个严格符合 POSIX 标准的 shell,但标准没有明确说明如何从字节转换为字符。它说使用,这进一步链接到charmap 文件LC_CTYPE
的概念,但没有任何地方说明这些 charmap 文件位于何处以及如何读取它们。说它们通常位于,但这对我来说还不够。此外,在我的 Linux 系统上,该目录中的文件是 gzip 编码的,我认为这可能不符合标准,但我没有在任何地方找到有关它的任何信息。man 5 charmap
/usr/share/i18n/charmaps
我认为一定有一些标准的 C 实用程序可以获取当前字符编码的详细信息(否则怎么会有人使用它?),但我在网络搜索中找不到任何此类信息。有和函数setlocale
,nl_langinfo
后者可以为您提供当前使用的字符编码的名称,但这对我解码它没有帮助。
或者我应该提前知道并实现所有这些?