【发布时间】:2014-04-13 03:35:56
【问题描述】:
我见过很多 API posix 系统,例如 Linux & Mac & android,它们接受 const char* 作为文件路径的参数。
一个例子是dlopen,如文档所示,第一个参数是const char*,那么它是否支持Unicode文件路径,例如带有中文的路径?
【问题讨论】:
-
仅供参考:有多种 Unicode 编码:UTF-8,有利于交换和 Unix 系统上的所有内容,Windows 使用的 UTF-16 由于 baskwards-compatibility-constraints 和 UTF-32可以将每个 Unicode 代码点表示为一个恒定长度的单位。所有其他人都只对利基应用感兴趣。
-
@Deduplicator,我想包装一个跨平台的Unicode API,我不想考虑性能和内存使用,因为差异会很小。那么对于生产力和易用性,您对 UTF-8 或 UTF-32 的优缺点有何看法?
-
使用所有 UTF-8,这样的问题最少。即使在具有 UTF-16 API 的系统上,其他一切都是在 UTF-8 中完成的,所以无论如何你都不得不在那里进行转换。请确保您始终始终使用本机 Unicode API,也许使用专门的加宽/收窄转换器。 utf8everywhere.org