在Qt中,对文本文件的操作进行了大幅简化。相比C++较为复杂的文件操作,Qt几乎只酋篚靶高需一两行代码便可完成相应的功能。不过,不少新学Q墉掠载牿t朋友可能都曾碰到过这样的情况:如果文本文件仅含有英文和数字,读取的文本显示正常;但是,要是文本中含有中文,显示时就会出现乱码。那么,究竟是什么原因导致Qt读取文件时出现乱码,出现了乱码又该如何处理呢?
工具/原料
Qt
一、乱码原因
1、在默认情况下,Qt以Unicode格式处理文本字符,因此,字符本身是不会有问题的。之所以出现乱码,原因在于Qt不知道将Unicode字符以何种方式显示出来。
2、打个比方说,如果采用两个字节来保存一个汉字,但显示时却按一个字节一个字节的方式,出现乱码也就是理所当然的事了。
二、解决办法
1、知道了原因,解决起来也就有了方向。为了避免乱码,首选我们需要做的是在程序中指定文本编码类型。例如,如果我们的文本文件含有简体中文,就指定为GBK。
2、接着,再按常规方法进行文件打开操作。
3、然后,像往常一样逐行读取文本数据。在这儿提醒大家注意,使用逐行读取的方法,虽然之倔匦茔读取速度略慢,但是程序运行时所需要的内存比较少,特别是当文件数据量很大时尤牾肟甘道为如此。若是采用一次性读取的方法,在读取大文件时会内存爆增。
4、下面,就到了关键的一步,将读取到的行数据转换为Unicode格式。注意,由于我们之前已经指定了GBK,所以这时文本将不会再显示为乱码。
5、下面是经过更改后的程序运行截图。可以看到,完美地读出了中文字符!