Linux使用什么编码作为其文件API?我应该如何使用C ++中的路径字符串,使用什么类?我指的是非ASCII字符的路径。在Windows上,我在Mac上使用UTF-16和std::wstring
- UTF-8和我自己的UTF-8字符串类。但遗憾的是我的课程在Linux上不可用,所以我应该使用什么?
答案 0 :(得分:6)
在内部,Linux允许使用任何字节序列作为文件名,除了空字节0和正斜杠'/'
(用作目录分隔符)。
在Linux上允许Unicode文件名的通用约定是对文件名使用UTF-8
编码。实现这一目标的最简单方法是使用良好的旧std::string
(而不是Windows上建议的std::wstring
),但是,您可能需要编写自己的类来验证它确实有效{{1 }}
几乎没有提供UTF-8
字符串处理的现成库示例:
UTF-8
,GPL)。答案 1 :(得分:1)
Linux不对文件名强制执行编码。但是使用UTF-8很常见。
答案 2 :(得分:0)
您仍然可以使用标准类型wchar_t(和使用wchar_t时的%ls用于printf / scanf)。此类型允许您使用非ascii字符。
wchar_t mystring[50] = L"sometext";
注意:要将普通的char字符串转换为wchar_t,你必须使用预修复“L”,你必须记住这与char类型不同,所以它有点使用:o