问题的由来与结束时一个故事:
Windows下使用g++命令,编译的cpp文件生成的可执行文件,输出的中文字符是乱码。
然后使用ls命令 展示的中文目录列表是 十六进制的字符。无法正常显示。
本来我以为问题处在安装的Git,然后用命令行对Git字符参考网上资料设置了一下,无效果。
然后是Git目录下etc 目录下的 gi-..config文件设置。不过我目录没找到这些文件。难道我用了假的Git?
之后,想到可能到是 Qt的问题,也对Qt改来改去。好吧其实根本问题在于:
ls命令是linux命令,所以中文字符会出问题。但是 dir等Windows命令没什么问题啊,哈!
所以,也没什么大碍。以后再看看为什么linux命令在Cmd控制台中文会显示成Hex字符格式?
最出现的问题是,使用IDE(C-Free)编写的Cpp文件,即使使用g++命令重新编译,中文依然正常显示。
但是使用notepad++编辑器写的Cpp文件,输出的中文字符依然是乱码(非hex字符格式).
网上搜索的资料结果还不错。提供了两点的解决方案:
1. 增加命令 -fexec-charset=GBK
g++ -fexec-charset=GBK main.cpp -o main && main
2. 是在记事本里,另存为 Ascii字符编码格式。
问题是,总不能在记事本里面写代码吧,我又不是什么大神。所以,我用notepad++的[编码]-[以ASCII格式编码]选项,如果选择[转为ASCII格式编码],可能没什么效果。之后再用g++命令编译,完美!输出中文字符。
但是为什么要Ascii呢?而不是utf8呢? 之前好像见到过中文的ASCII其实是GBK 。。。
Qt目录下有G++命令,不过我把DevCpp目录下mingw64\bin目录下命令用Cmd链接到桌面上,所以用的devCpp携带的G++命令。
更多相关知识:
Cmd_启动参数,Vim的保存和退出,G++编译器的使用,G++编译后输出中文显示乱码解决方案
July 5 , 2017 (Pm 23:48)