由于Qt Creator的默认编码为UTF-8,但Win10命令行默认编码为GBK,这时就会出现Qt命令行程序内的中文字符无法正常显示,只能看到一堆乱码:
我们有两种方法解决乱码问题:
修改Qt Creator文本编码
Qt Creator的文本编码的设置可以在三个地方修改,分别是全局设置(每次新建文件都按照这个编码设置)、自定义编码(工程自定义编码,只针对一个工程里的文件)和单个文件的编码修改。
假设当前命令行的编码格式为GBK(936)
1.修改全局编码设置
如果使用Qt Creator新建工程或文件,文件自动使用该设置里的编码格式,修改全局编码步骤:
注意:修改全局设置后,当前打开的文件并不会立刻生效,需要文件关闭后再打开才能生效。
一般修改格式后,文本原来的中文也会变成乱码(第三种修改方法,单文件编码修改可以避免这种情况),需要重新修改乱码字符。
修改完后,编译运行,不再出现乱码。
2.修改工程自定义编码格式
工程自定义编码设置的修改步骤,与全局设置相同,需要重开文件才能生效。
3.修改单个文件编码格式
这种修改方式的特点是生效快,不用重新打开文件,而且可以进行按编码保存,即修改编码格式而不修改文本显示效果。
“ ”
修改creator_process_stub.exe编码格式(命令行)
假如我们不想修改Qt Creator的编码格式,且坚持要使用默认的UTF-8编码格式,这时我们可以修改qt命令行的编码格式。
首先在出现乱码的命令行窗口的标题栏右键选中属性,然后选择使用旧版控制行选项,
关闭当前命令行,重新打开一个(重新运行Qt程序),设置默认值,如果有UTF-8,则选择,如果没有,进入下一步。
我的Win10控制台程序编码选择中没有UTF-8选项,所以需要通过修改注册表的方式实现UTF-8编码显示。
键盘输入Win+R,输入cmd打开控制台,在控制台中输入regedit,打开注册表,
打开目录HKEY_CURRENT_USER->Console->QtCreator_bbin_qtcreator_process_stub.exe,如果没有CodePage的数值项,则手动添加一个(DWORD数值),命名为CodePage,
将该数值的数据改为十进制的65001(UTF-8)
再次运行Qt命令行程序,此时Qt控制台已经可以显示UTF-8编码的字符了: