c++ - C/C++ 将编码设置为 UNICODE.. 如何将 'ă' 写入文件

标签 c++ c unicode encoding wchar-t

我正在尝试将特殊字符写入文件。具体来说是'ă'字符,它显然具有U+0103代码。

我不明白如何将编码设置为 UNICODE。以及如何实际打印该字符。我尝试过的所有操作,包括 wchar_t 都仅打印 '?'

如果我使用 wchar_t 读取文本文件,它会逐个字符地读取吗? 因为文本文件中的一个普通字符是1个字节,而wchar_t是2/4。我需要用 char 读取并转换吗?

一些示例源代码将不胜感激...... 提前致谢!

最佳答案

搜索时需要的术语是“编码”(从 Unicode -> 字节),以及“解码”(从字节 -> Unicode)。一般来说,您必须知道字节具有哪种编码。

为了能够打印到控制台,您需要将 Unicode 字符串编码为控制台的编码。对于 Linux 来说,它是 utf-8,而在 Windows 上它可能是一些无用的东西,比如 cp1252(可以更改)。

我建议在 C++ 中使用 Unicode 时查看 Boost.Locale ( http://www.boost.org/doc/libs/1_58_0/libs/locale/doc/html/index.html ) 或 ICU ( http://site.icu-project.org/ )(其他语言有更成熟/更容易使用 Unicode 功能,以防您没有锁定在 C++ 中) )。

关于c++ - C/C++ 将编码设置为 UNICODE.. 如何将 'ă' 写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29876035/

相关文章:

c++ - 在编译时强制执行正确的状态转换

c - Netbeans:如何在 C 和 C++ 编译器之间切换?

c - strcasecmp算法有缺陷吗?

javascript - 如何比较忽略特殊字符的javascript中的字符串

c++ - 从 ttf 到 type 2 CID 字体(type 42 基本字体)的转换

c# - 如何在 C# 中将 "=?utf-8?B?...?="解码为字符串

c++ - delete 运算符如何处理 c 中的指针?

c++ - 将值乘以 static_cast<uint8_t> 时如何确定 auto 的类型

c++ - gcc/diab : keep unused function/sections

C内存分配问题