[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("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;
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) 收藏 举报
浙公网安备 33010602011771号