繁体   English   中英

C++:如何将 std::string 的内容写入 UTF-8 编码文件?

[英]C++: How do I write the contents of std::string to a UTF-8 encoded file?

我在 Windows 上使用 C++。 我在std::string中有一些数据,我想用 UTF-8 编码写入文件。 我该怎么做呢?

我在 std::string 中有一些数据,我想用 UTF-8 编码写入文件。 我该怎么做呢?

如果字符串中包含 UTF-8 编码的文本,则只需写入数据。 例如,您可以使用std::ofstream

如果字符串中不包含 UTF-8 中的数据,那么在写入之前,必须先从数据当前所在的编码转换。 . 通常没有保证检测当前编码的方法。 你应该事先知道它。


但是当我在记事本中检查创建文件的编码时,它是 ANSI 而不是 UTF-8

就像我在上一节中提到的关于检测字符串的源编码一样,没有保证的方法可以做到这一点。 记事本也没有这种超能力。 它可能使用简单的规则来猜测编码。 有时它会猜错。

UTF-8 对 7 位 ASCII 编码中的字符的表示与 ASCII 本身相同(我猜记事本通过名称“ANSI”调用 ASCII)。 如果您的字符串仅包含这些字符,则字符串的 UTF-8 编码与 ASCII 无法区分。 在这种情况下,记事本很可能会猜错(尽管从技术上讲,猜测也是正确的,因为在这种情况下 UTF-8 顺便说一句也是 ASCII)。

这类似于如何将 UTF-8 编码的字符串写入 windows 中的文件,在 C++ 中

请注意,跨平台写入文件是不同的(在 windows 中,您有 CreateFile、WriteFile、ReadFile、CloseHandle,不仅限于文件,还可以对 Device-Drivers 执行操作),而在 linux 中,您有不同的功能集。 最好检查您打算使用的平台(在您的情况下是 Windows)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM