• 6238阅读
  • 3回复

[提问]QByteArray [复制链接]

上一主题 下一主题
离线cthawdf
 

只看楼主 倒序阅读 楼主  发表于: 2012-05-04
关键词: 求助问题QT4
请问我读取本地的zip包,读到QByteArray中长度是对的,为什么数据不对呢,转换成QString输出时“PK”,这是为什么
QString path = QFileDialog::getOpenFileName(this,"open file","","Zip (*.zip)");
    qDebug()<<path;
    ui->lineEdit->setText(path);
    QFile f(path);
    if(!f.open(QIODevice::ReadOnly))
        return;
    QByteArray ba = f.readAll();
qDebug()<<ba.length();
    QString str = QString(ba);
    qDebug()<<str;
离线dbzhang800

只看该作者 1楼 发表于: 2012-05-04
你确定该字节流(QByteArray)能转成字符串(QString)么?

如果能,是何种编码?
离线cthawdf

只看该作者 2楼 发表于: 2012-05-04
嗯  是编码的问题
QTextCodec *codec = QTextCodec::codecForName("UTF-32");
    QString string = codec->toUnicode(ba);就能转换了,但有个问题就是转换后string应该是每个字符是两个字节吧,string.size() *2和ba的size相差十几个字节
离线cthawdf

只看该作者 3楼 发表于: 2012-05-04
回 楼主(cthawdf) 的帖子
嗯  是编码的问题
QTextCodec *codec = QTextCodec::codecForName("UTF-32");
    QString string = codec->toUnicode(ba);就能转换了,但有个问题就是转换后string应该是每个字符是两个字节吧,string.size() *2和ba的size相差十几个字节
快速回复
限100 字节
 
上一个 下一个