gpt4 book ai didi

c++ - 相同的语言环境,不同的输出

转载 作者:太空狗 更新时间:2023-10-29 23:17:56 27 4
gpt4 key购买 nike

我尝试将 UTF-8 字符串打印到 Windows 控制台。 console的代码页设置为65001(utf-8),字体设置为lucida console,c++源文件编码为utf-8无bom。考虑以下代码:

#include<iostream>
#include<locale>
#include<clocale>

int main(int narg, char** arg){
using namespace std;
cout<<"C++ locale: "<<cout.getloc().name()
<<"\nC locale: "<<setlocale(LC_ALL, 0)<<"\n";
cout<<"中文\n";
printf("中文\n");
return 0;
}

输出是:

C++ locale: C
C locale: C
������
中文

谁能解释一下并给出解决方案(使 c++ 和 c 具有相同的正确输出。)?非常感谢。

系统:win7(32位)

编译器:vs2012 express

编辑:程序在ubuntu12下用gcc是正确的。

最佳答案

默认情况下控制台不会显示 UTF,但是您可以使用:

chcp 65001 将控制台更改为 UTF 或使用 SetConsoleOutputCP

通过代码更改它

希望这些帮助:)附录:抱歉,最初错过了那一点!我能让 ?diamond 符号出现的唯一方法是使用我的第二台没有国际字体的机器。我不得不手动将 consolas 字体添加到注册表中,但是在 Windows 控制台中显示 utf 字符集时存在严重问题。在我的 windows 2003 机器上,我必须执行以下操作:开始 -> 控制面板 -> 区域和语言选项 -> 高级 -> 非 Unicode 程序的语言 -> 中文

关于c++ - 相同的语言环境,不同的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15939674/

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