我们用Qt来实现音乐播放器时,一个关键的问题是如何用QString来存放 (*.lrc)文件中的中文或其他国家语言的歌词。
首先我们得了解Qt的内部编码格式以及Windows下lrc文件的编码格式,这样我们才能采取正确的方式获取不乱码的歌词。
Qt的默认编码格式: Unicode
Windows的默认编码格式: GBK
读取lrc歌词文件的方式: 采用文本流的方式读取
/* 文本流读取 */QFile lrc_file(/*歌词文件路径*/);if (!lrc_file.open(QIODevice::ReadOnly | QIODevice::Text)){ui->music_lrc_label->setText("打开歌词文件失败");return ;}//****这种方式读取中文不乱码QTextStream in(&lrc_file);QString all_lrc=in.readAll();lrc_file.close();
在Windows下中文GBK编码与Unicode编码相互转换
/* GBK 转换到 QString */QString str = QString::fromLocal18Bit("这里是中文");/* QString 转换到 GBK */QString str = ui.my_lineEdit->text(); //从输入框内获取中文文本//转换,共两步QByteArray bytes = str.toLocal18Bit();char* gbk_str = bytes.data();