在最新的vs2022中编译运行cpp文件时出现中文乱码。在尝试高级保存选项改成UTF-8(65001)的过程发现无法进行更改。


我尝试修改成65001然后确定保存编译运行时还是有中文乱码。

这个时候再次点击保存高级选项发现又跳回936了。

在最新的vs2022中编译运行cpp文件时出现中文乱码。在尝试高级保存选项改成UTF-8(65001)的过程发现无法进行更改。


我尝试修改成65001然后确定保存编译运行时还是有中文乱码。

这个时候再次点击保存高级选项发现又跳回936了。

阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程
VS2022 中的默认编码是 UTF-8 without BOM(65001),但是 VS2022 并不支持直接修改编码为 UTF-8(65001),而是只能选择 UTF-8 without BOM 或 UTF-8 with BOM。
如果你想要保存为 UTF-8(65001),可以尝试以下方法:
如果你已经尝试了上述方法,但是仍然出现中文乱码,可以尝试以下方法:
#include <locale.h>
#include <codecvt>
int main() {
std::locale::global(std::locale::classic());
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
std::wstring str = converter.from_bytes("中文乱码");
// ...
return 0;
}
这将强制使用 UTF-8 编码来处理中文字符。
UTF-8 without BOM 和 UTF-8 with BOM 是不同的编码方式,UTF-8 without BOM 不包含 BOM(Byte Order Mark),而 UTF-8 with BOM 则包含 BOM。VS2022 中的默认编码是 UTF-8 without BOM,但是 VS2022 并不支持直接修改编码为 UTF-8(65001),而是只能选择 UTF-8 without BOM 或 UTF-8 with BOM。