我们用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();