症状:
Qt编译器中只要输入中文,调试时就会报错:C4819:该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 xxx.h/xxx.cpp
工具:
notepad++
思路:
编码问题,需要按utf-8 + BOM 编码重新保存代码文件。
步骤:
1.去notepad++官网下载文本编辑器。
Notepad++ - Download https://notepad-plus.en.softonic.com/
启动安装程序,语言选择页面根据你的需要选择。需要中文的同学这一步直接 中文[简体] 就好,然后在 “选择组件” 页面点住localization,勾选Chinese(simplified)。
2.转换编码,重新保存
仔细观察报错信息,我们可以看到一条报错信息的左边给出了详细报错内容,右边给出报错文件名,下边给出报错文件路径。
可以看出main.cpp,addstu.h,mainwindow.cpp三个文件都需要重新保存。
以main.cpp为例,选中main.cpp的全部代码,粘贴到notepad++编辑器中,notepad++菜单栏中找到“编码(N)”,点击"使用UTF-8-BOM编码"。
然后选择保存或另存为,弹出的路径中一定是选择报错文件的地址!文件名也和报错文件名相同,保存类型选择C++ source file,注意补上相应的文件名后缀(可能有些后缀默认是.h,如果我们改动的是.cpp,这时就要把.hgaicheng.cpp),没错,就是用新的编码文件替换旧的编码文件。
3.回到Qt
这时Qt会很机智地检测出“文件已改变”,并询问你,这时选择Yes或者Yes to All。
然后重新编译运行即可。
照此方法逐一修改报错文件,注意当你再次打开notepad++时很可能显示的时是上次的另一个文件,注意不要不小心用不同的文件覆盖了,可以叉掉它开一个新的文本页面进行操作。
另外,如果多次调试后出现了public...没有引用...未找到.obj文件这样的报错,我们可以到工程目录下找到形如build-xxx-Desktop_Qt_5_x_y_compiler_xxbit-Debug文件夹,把文件夹里的东西都删掉,然后重新编译运行,就不会有这样的错误啦~
是不是很简单?