[Qt]有关文字编码的问题

       Qt内部用Unicode保存文字,而代码、其他文件和数据库中的文字可能是其他编码,所以需要进行文字编码的转换。

QByteArray encodedString = "...";
QTextCodec
*codec = QTextCodec::codecForName("KOI8-R");
QString
string = codec->toUnicode(encodedString); //将字节流转换为Unicode
QString string = "...";
QTextCodec
*codec = QTextCodec::codecForName("KOI8-R");
QByteArray encodedString
= codec->fromUnicode(string); //将Unicode转换为字节流

      一段要解码的文字可能拆成多个字节流传送,一个文字的编码可能拆在前一段字节流的尾和后一段字节流的头,这时要用解码器,解码器中记录解码的状态

QTextCodec *codec = QTextCodec::codecForName("Shift-JIS");
QTextDecoder
*decoder = codec->makeDecoder();
QString
string;
while (new_data_available())
{
    QByteArray chunk
= get_new_data();
    string += decoder->toUnicode(chunk);
}
delete decoder;


posted on 2011-03-16 17:55  zhihuichien  阅读(329)  评论(0)    收藏  举报

导航