Linux内核使用哪种Unicode编码?

3

我了解到Windows在x86/x64系统上使用UTF-16LE编码。那么Linux呢?它使用哪种Unicode编码:UTF-16LE还是UTF-32?


1
你为什么认为Linux偏爱任何特定的编码方式?你是在问常见的Linux发行版是否假定配置文件使用特定的编码方式进行编码,还是系统调用假定输入是使用特定编码方式编码的代码点字符串? - Mike Samuel
你为什么提到处理器架构?你认为编译Linux所用的架构会影响除字节序外的编码吗? - Mike Samuel
1
@Mike Samuel:我在问系统调用使用哪种编码? - Jichao
1
UTF-32 也有大端序和小端序的形式。 - Jonathan Leffler
2个回答

4

http://www.xsquawkbox.net/xpsdk/mediawiki/Unicode的说明如下:

Linux

在Linux上,UTF8是所有字符串的“本地”编码格式,并且是像fopen()这样的系统例程所接受的格式。

因此,在这方面,Linux与Plan 9相似,而boost::filesystem和Unicode在Linux和Windows下则指出:

在我看来,尽管使用宽字符串初始化了boost::filesystem::path,但在Linux下,boost::filesystem没有在path::native()中提供宽字符串。

这将排除UTF-16和UTF-32,因为所有这些变体都需要宽字符支持--字符串内允许NUL字节。


我认为Linux只将路径视为字节,而不是UTF-8字符。 - Melab
1
@melab,lwn 倾向于认为内核是字符集不可知的,并将路径视为以空字符结尾的字节数组。然而,忽略用户空间的约定可能会带来风险。 - Mike Samuel

3

通常Unix更喜欢使用UTF-8。这份文档建议Linux内核也采用UTF-8。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接