gpt4 book ai didi

c++ - C++ 中的 Unicode 不在 Mac 终端中显示

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

Terminal > Profiles > Advanced > Text encoding 设置为 Unicode (UTF-8)

Terminal > Profiles > Advanced > Set locale environment variables on startup 已选中。

Terminal > Profiles > Advanced > Unicode East Asian Ambiguous characters are wide 已选中(我也尝试过未选中 - 两者都给出相同的结果)。

在终端配置文件中选择的字体与汉字兼容——我已经检查过了。

我通过终端本身检查了 locale,它给出了以下内容:

LANG="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL="en_US.UTF-8"

-- 我不确定这是否是问题所在,因为它说 en_US 但也说 UTF8,这是我输入的字符的编码.

为了测试所有这些,我使用了以下代码:

char dao [4] = "\u9053";
std::wcout << "Character: " << dao << std::endl;

wchar_t wdao[] = L"道";
std::wcout << "Character 2: " << wdao << std::endl;

起初,这些字符以问号的形式出现,但现在它们根本不出现了。如果我将所有这些行放入一个程序中,所有显示的都是 Character: -- 它永远不会到第二行,它不显示汉字,也没有给出错误.

我试过 setlocale(); 但没有用。

我还确保将 C++ 代码的源文件设置为 Unicode UTF-8

有什么想法吗?这里有什么我想念的吗?

更新:我可以通过这种方法让字符显示在终端中:

char dao [4] = "道";
std::cout << "Character: " << dao << std::endl;

char dao2 [4] = "\u9053";
std::cout << "Character: " << dao2 << std::endl;

也就是说,我永远无法让它与 wchar_t 而不是 char[] 一起工作。我想这已经足够好了,因为它可以正常工作,但是,如果有人知道使用 wchar_t 的问题是什么,我会很高兴知道这一点以供将来引用。

最佳答案

没有 << 运算符将窄字符串输出到 wostream(例如 wcout)。

这就是你在第一种情况下所做的,你声明

char dao [4] = "\u9053";

然后尝试输出到std::wcout

关于c++ - C++ 中的 Unicode 不在 Mac 终端中显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38323885/

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