首页 >后端开发 >C++ >如何在 C 中正确打印 Unicode 字符?

如何在 C 中正确打印 Unicode 字符?

Linda Hamilton
Linda Hamilton原创
2024-12-11 17:58:10652浏览

How Can I Correctly Print Unicode Characters in C  ?

在 C 中打印 Unicode 字符

尝试打印具有 Unicode 值的字符时,例如西里尔小写字母 Ef (U 0444) ,以下代码可能无法正常工作预期:

int main() {
   wchar_t f = '1060';
   cout << f << endl;
}

解决方案:

要正确打印 Unicode 字符,有以下几种方法:

  • 通用角色名称(UCN):

    • 字符“ф”可以表示为“u0444”或“U00000444”。
  • 文字字符(如果源支持编码):

    • 如果源码编码支持该字符,可以直接写成 'ф'。

对于终端打印,以下代码假设执行编码和终端模拟器之间兼容:

#include <iostream>

int main() {
    std::cout << "Hello, ф or \u0444!\n";
}

对于Windows,建议将输出文件句柄设置为 UTF-16 模式:

#include <iostream>
#include <io.h>
#include <fcntl.h>

int main() {
    _setmode(_fileno(stdout), _O_U16TEXT);
    std::wcout << L"Hello, \u0444!\n";
}

对于可移植代码,可以使用以下技术:

#include <iostream>
#include <vector>

int main() {
    std::vector<wchar_t> v = {0x444};
    std::wcout.write((const wchar_t*)&v[0], 1);
}

以上是如何在 C 中正确打印 Unicode 字符?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn