cursor与VS2022开发过程中的乱码问题(warning C4819与error C2065)
在VS2022中运行cursor编译器生成的代码时,出现了C4819和C2065错误。首先尝试调整头文件引用顺序,但未解决问题。随后,通过将文件编码格式更改为Unicode,解决了编译错误,但在cursor中出现了乱码。进一步在cursor中选择UTF-16LE编码格式保存文件,确保了在cursor和VS2022中都能正常显示和编译。总结指出,错误主要由编码格式引起,Windows内部广泛使用UT
问题背景:
在cursor编译器中AI生成的代码在VS2022中运行报错,报错如下
warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
error C2065: “m_Clients”: 未声明的标识符
解决过程
1.调换了一下头文件的引用顺序
//原先的
#include "pch.h"
#include "framework.h"
#include "MFCAPP.h"
#include "MFCAPPDlg.h"
#include "GameServer.h"
//修改后的
#include "pch.h"
#include "framework.h"
#include "GameServer.h"
#include "MFCAPP.h"
#include "MFCAPPDlg.h"
将声明了m_Clients的头文件提到了前面,但没有解决问题
2.更改文件编码格式为Unicode
更改文件编码格式的方式有很多,可以在VS中的高级保存选项中更改文件的保存格式为Unicode,这里放一个参考链接:warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失-CSDN博客
也可以用其他编辑器打开(记事本、Notepad之类的),然后更改编码格式,我用的就是这个方法。
更改完文件格式之后确实也能正常运行了。。。但新出现了问题
cursor中乱码

运行完之后打开cursor想继续开开心心用AI改代码,打开一看天塌了:)
新问题解决
点击右下角中的编码格式”UTF-8“

在弹出来的选项中选择”Save with Encoding“

编码格式选择UTF-16 LE
这样就可以在cursor正常显示的同时,也能在VS中正常编译了~
PS:如果你发现你的程序在运行的时候弹出的文字是乱码的,而你的代码文件里显示的又是正常的,可以考虑一下编码格式错误的原因。
总结
这次错误主要是编码格式引起的,对看到的几篇介绍编码格式的文章做一个小总结
1.为什么使用UTF-16编码格式,就可以在VS中正常编译了?
Windows 内部广泛使用 UTF-16 LE(如系统 API、.NET 字符串),因其对 Unicode 字符的高效处理,即UTF-16 是 Windows 内核的默认编码,编译器也能识别
2.为什么VS不支持UTF-8,UTF-8 with bom与UTF-8有什么区别
早期 Windows 系统默认使用 ANSI 编码(如 GBK、Shift-JIS),而 UTF-8 无 BOM 文件可能被误判为 ANSI,因此不支持该编码格式。
UTF-8 with bom相比于UTF-8只有在文件头部多了一段3 字节文件头,属于微软的非标准编码,在开发中容易引起问题,但windows的记事本默认保存编码格式就是UTF-8 with bom
更多推荐



所有评论(0)