提问人:yakubiq 提问时间:7/11/2023 更新时间:7/12/2023 访问量:130
Visual Studio utf-8 格式
Visual Studio utf-8 formatting
问:
我正在用 c++ 创建一个服务器,我决定用我的母语来做,但是当我编译它时,我只是得到这个胡言乱语,我不知道如何解决它。我尝试了多种方法,但 Visual Studio 只是一个我似乎无法弄清楚的谜语。
std::cout << ">> Připojení k serveru úspěšné" << std::endl;
当我编译它时,它看起来像这样
>> P?ipojenφ k serveru ·sp?ÜnΘ
它是隐藏在设置中的某个地方,还是我是否包含一些标题?
答:
0赞
JosefZ
7/12/2023
#1
阅读并遵循 UTF-8 Everywhere;甚至 Microsoft 也鼓励所有 Windows 用户(和开发人员)在 Windows 应用程序中使用 UTF-8
代码页:
使用
UTF-8
字符编码以实现最佳兼容性 Web 应用程序和其他基于 *nix 的平台(Unix、Linux 和变体), 最大限度地减少本地化错误,并减少测试开销。
UTF-8
是国际化的通用代码页,并且是 能够对整个 Unicode 字符集进行编码。它被使用 在网络上无处不在,并且是基于 *nix 的平台的默认设置。
按照上面的参考,我从头开始创建了一个空的控制台应用程序(在 Microsoft Visual Studio 19 中),最终以以下代码结束(另存为编码文件):UTF-8
.cpp
#include <windows.h>
#include <iostream>
#pragma execution_character_set( "utf-8" )
int main(int argc, char* argv[])
{
// SetConsoleOutputCP(65001);
// SetConsoleCP(CP_UTF8);
std::cout << ">> 😂 Ελληνικά 😃 Русский 😄 Češtinář" << std::endl;
std::cout << ">> Připojení k serveru úspěšné" << std::endl;
for (int i = 1; i < argc; ++i)
{
printf("param %d = %s\n", i, argv[i]);
}
return 0;
}
项目属性、C/C++ 命令行参数(调试配置):
/JMC /permissive- /ifcOutput "x64\Debug\" /GS /W3 /Zc:wchar_t /ZI /Gm- /Od /sdl /Fd"x64\Debug\vc142.pdb" /Zc:inline /fp:precise /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /errorReport:prompt /WX- /Zc:forScope /RTC1 /Gd /MDd /FC /Fa"x64\Debug\" /EHsc /nologo /Fo"x64\Debug\" /Fp"x64\Debug\So76656796.pch" /diagnostics:column
输出显示所有字符串(硬编码的字符串或作为命令行参数传递的字符串)均得到正确处理:
So76656796.exe Ελληνικά Русский Češtinář 😂😃😄
>> 😂 Ελληνικά 😃 Русский 😄 Češtinář >> Připojení k serveru úspěšné param 1 = Ελληνικά param 2 = Русский param 3 = Češtinář param 4 = 😂😃😄
评论
0赞
yakubiq
7/12/2023
嗨,非常感谢。它本身不起作用,但后来我添加了它,它工作得很好。#pragma execution_character_set( "utf-8" )
SetConsoleOutputCP(CP_UTF8);
评论
""
一开始就不是 UTF8 字符串文本。用于 UTF8 字符串文本,并确保将文件另存为 UTF8。如果将文件另存为 Latin1,则任何非 Latin1 文本都会被篡改u8".."
wstring
wcout
u16string
u8""
std::wcout