gpt4 book ai didi

c++ - 国际 UTF-32 字符串输出到 Linux 中的控制台

转载 作者:太空宇宙 更新时间:2023-11-04 04:26:18 26 4
gpt4 key购买 nike

#include <stdio.h>
#include <iostream>
#include <locale>

int main()
{
const wchar_t *str = L"\u041F\u043E\u0440\u044F\u0434\u043E\u043A";
std::locale::global(std::locale(""));
std::wcout << str << std::endl;
}

下面是一段代码,它将 UTF-32 wchar_t 字符串中的俄语短语输出为:

  • 正确的:Порядок 在 Ubuntu 11.10 中从 UTF-8 gnome 终端运行时
  • РџРѕСЂСЏРкаРѕРє 在 Eclipse 中测试运行如上
  • 45=B8D8:0B>@ 在真实程序中的 Eclipse 中(我什至不知道谁在哪里做什么,但我想有人确实搞乱了语言环境)
  • >???????如果我不调用 locale
  • str 在 Eclipse Watch 窗口中显示为 Details:0x400960 L"\320\237\320\276\321\200\321\217\320\264\320\276\320\272"
  • 在 Eclipse 内存窗口中仅显示为 ASCII 字节字符(并且无法指定这是 UTF-32 字符串)

我认为这是 Eclipse 控制台或程序中的错误配置,因为,例如,其他人只是在 Eclipse 中运行我的代码,他们会 see正确output .

有人可以解释一下这种困惑吗?设置所有部分(操作系统、gcc、终端、Eclipse、源...)以输出存储在 UTF-32 wchar_t 字符串中的国际符号的正确方法是什么?

顺便说一句,当我们有 UTF-32 时,为什么我还应该关心所有这些,并且这应该足以知道里面的内容......

最佳答案

结果是其他代码更改了语言环境。

关于c++ - 国际 UTF-32 字符串输出到 Linux 中的控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8613359/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com