2401_87823254 2025-02-28 20:10 采纳率: 25%
浏览 102

如何在尝试高级保存选项改成UTF-8(65001)的过程发现无法进行更改?(关键词-中文乱码)

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

img

img

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

img

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

img

  • 写回答

4条回答 默认 最新

  • 阿里嘎多学长 2025-02-28 20:10
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    解决方案

    VS2022 中的默认编码是 UTF-8 without BOM(65001),但是 VS2022 并不支持直接修改编码为 UTF-8(65001),而是只能选择 UTF-8 without BOM 或 UTF-8 with BOM。

    如果你想要保存为 UTF-8(65001),可以尝试以下方法:

    1. 保存文件时,选择 "文件" -> "保存为" -> "文本文件",然后选择 "UTF-8(65001)" 作为编码。
    2. 在 VS2022 中,打开 "工具" -> "选项" -> "文本编辑器" -> "文件编码",然后选择 "UTF-8(65001)" 作为默认编码。

    如果你已经尝试了上述方法,但是仍然出现中文乱码,可以尝试以下方法:

    1. 在 VS2022 中,打开 "工具" -> "选项" -> "文本编辑器" -> "文件编码",然后选择 "UTF-8 without BOM" 作为默认编码。
    2. 在文件头部添加以下代码:
    #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。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月28日