【问题标题】:Which Unicode encoding does the Linux kernel use?Linux 内核使用哪种 Unicode 编码?
【发布时间】:2012-04-07 03:45:11
【问题描述】:

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

【问题讨论】:

  • 是什么让您认为 Linux 偏爱任何特定的编码?您是在问常见的 Linux 发行版是否假定配置文件使用特定编码进行编码,或者系统调用是否假定输入是使用特定编码编码的代码点字符串?
  • 为什么要提到处理器架构?您是否认为编译 Linux 的架构会影响编码超出字节顺序?
  • @Mike Samuel:我在问系统调用采用哪种编码?
  • UTF-32 也有 BE 和 LE 形式。

标签: linux unicode character-encoding


【解决方案1】:

http://www.xsquawkbox.net/xpsdk/mediawiki/Unicode

Linux

在 Linux 上,UTF8 是所有字符串的“本机”编码,是 fopen() 等系统例程接受的格式。

所以 Linux 在这方面就像 Plan 9,而 boost::filesystem and Unicode under Linux and Windows 说明

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

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

【讨论】:

  • 我以为 Linux 只将路径视为字节,而不是 UTF-8 字符。
  • @melab, lwn 倾向于同意内核与字符集无关,并将路径视为以 nul 结尾的字节数组。但是,忽略用户空间约定会带来危险。
【解决方案2】:

通常 Unix 更喜欢 UTF-8。这个document 表明 Linux 内核也是如此。

【讨论】:

    猜你喜欢
    • 2012-09-28
    • 2012-06-29
    • 1970-01-01
    • 2013-10-05
    • 1970-01-01
    • 1970-01-01
    • 2016-09-30
    • 2011-07-01
    • 2012-01-13
    相关资源
    最近更新 更多