中文乱码算是一个常见的问题,本文提供两种解决方案
1 对字符串单独进行处理(不推荐)
QString str=QString::fromLocal8Bit("阿萨德");//使用此函数进行转码以显示正常(本地语言方式)
QString str=QString::fromUtf8("阿萨德");//qt还提供了从其他编码方式转换成QString的方法
QString str=QString::toUtf8("阿萨德");//还可以将QString转换为其他编码方式
2 不同的文本编辑器可能使用的是不同的编码标准,如使用windows自带的记事本,其编码方式就是GBK,所以在qt编辑器中打开记事本写的cpp文件(或其他文本文件)会显示乱码
以上概念不仅适用于文本编辑器,也适用于任何显示界面的程序,如用记事本写的编码方式是GBK,cmd使用的也是GBK,所以编译后输出的中文可以正常显示
此处还要提一下编译器,就我所知提两个例子,一个是g++编译器,它不会对源码进行转码,即源码是什么编码,就是什么编码(如记事本写的GBK,那编译出来就是GBK);一个是MSVC,它会根据字符串的类型(如char、wchar等)来进行转码,一般都是ANSI或Unicode格式的编码
所以要解决乱码问题,一个点在于源码的编码方式,一个点在于编译器的特性,最后就是最终显示的界面所使用的编码方式
我们可以通过Qt编辑器来设置源码文件的编码方式(或者使用其他编辑器也可以),一般我们都采用UTF-8来编写源码,以获得最广泛的支持