posix系统如何支持unicode?

时间:2014-04-13 03:35:56

标签: c api unicode posix

我见过很多API posix系统,例如Linux& Mac& android,接受const char*作为文件路径的参数。

其中一个例子是dlopen,正如文档所示,第一个参数是const char*,它是否支持Unicode文件路径,例如中文路径?

2 个答案:

答案 0 :(得分:3)

POSIX不需要支持Unicode文件名。 (参见:https://stackoverflow.com/a/2306003/481267)但是,如果它们以UTF-8编码,则支持Unicode没有技术障碍。许多现代文件系统允许文件名中除\0/之外的任何字符。

POSIX API处理以空值终止的字节序列,当字符串以UTF-8编码时,代码点的表示不包含零字节。此外,ASCII范围之外的所有字符(0x00-0x7f)都完全使用高位设置(0x80-0xff)的字节进行编码,因此系统不会混淆认为存在目录分隔符。一些Unicode字符的中间部分。

答案 1 :(得分:2)

它假设在现代Linux / Unix系统中,unicode文件名以UTF-8语言环境表示,它是面向字节的(尽管一些底层文件系统在内部以UTF-16存储文件名)。