我见过很多API posix系统,例如Linux& Mac& android,接受const char*
作为文件路径的参数。
其中一个例子是dlopen,正如文档所示,第一个参数是const char*
,它是否支持Unicode文件路径,例如中文路径?
答案 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存储文件名)。