在Linux上使用文件路径字符串,使用什么编码
Working with file path strings on Linux, what encoding to use?
Linux的文件API使用什么编码?我应该如何使用C++中的路径字符串,使用什么类?我指的是包含非ASCII字符的路径。在Windows上,我使用UTF-16和std::wstring
,在Mac上使用UTF-8和我自己的UTF-8字符串类。但不幸的是,我的类在Linux上不可用,那么我应该使用什么呢?
在内部,Linux允许使用任何字节序列作为文件名,但空字节0和正斜杠'/'
(用作目录分隔符)除外。
Linux上允许Unicode文件名的常见约定是对文件名使用UTF-8
编码。实现这一点的最简单方法是使用好的旧std::string
(而不是Windows上建议的std::wstring
),但是,您可能需要编写自己的类,以验证它确实是有效的UTF-8
。
提供UTF-8
字符串处理的现成库示例很少:
- ICU(坚固但非常重)
- Glib::ustring(具有到
std::string
、GPL的隐式强制转换) - UTF8-CPP(非常轻,仅限收割台)
Linux不强制对文件名进行编码。不过,使用UTF-8是很常见的。
您仍然可以使用标准类型wchar_t(使用wchar_t时,printf/scanf使用%ls)。此类型允许您使用非ascii字符。
wchar_t mystring[50] = L"sometext";
注意:要将普通的char字符串转换为wchar_t,你必须使用预修复"L",你必须记住这与char类型不同,所以使用它有点有趣:o
相关文章:
- 过时的编码(C )的确切含义是什么?
- 为什么 c++ 中需要条件来实现良好的编码实践,即使我们没有什么可写的
- 什么是执行范围内的字符集及其编码
- Windows的unicode数据类型使用什么unicode编码(UTF-8、UTF-16等)
- 返回值和副作用编码之间有什么区别
- 通过c++主字符**参数处理不同字符串编码的正确方法是什么
- 是什么决定了C++中的字符编码
- c++setter编码约定.输入变量名称应该是什么
- 这种矢量编码有什么问题?(初学者)
- 解码像 FAST 这样的数据协议的快速方法是什么,其中数据以字节为单位编码,并将位作为存在标志
- SNMP 类型无符号32 的正确编码是什么
- 在C++中加密硬编码字符串的最佳方法是什么
- 使用硬编码元素初始化 std::vector 的最简单方法是什么<MyClass>?
- 在Linux上使用文件路径字符串,使用什么编码
- Java和C++的编码风格之间有什么具体的区别
- 我的编码有什么问题吗
- 使用 IFilter 检索的文本的编码是什么?
- 什么fstream写函数写到文件(编码在post)
- Boost::asio这种奇怪的编码风格是什么
- 在c++中设置编码的最正确方法是什么?