来自Base64的QT变音字符

时间:2017-02-07 17:15:50

标签: c++ qt base64 decode

我遇到了在QT下从Base64编码的字符串中获取变音字符的问题。我正在创建字符串,然后我用Base 64编码它,我将它保存到文件。接下来我想解码打开文件中的字符。我就是这样做的。

void MainWindow::on_treeWidget_2_doubleClicked(const QModelIndex &index){
    encode("([ęśćźół35:11");
    decode();
}

void MainWindow::encode(QString input){
    QString item_to_change = input.toUtf8().toBase64();
    QString filename="output.txt";
    QFile file( filename );
    if ( file.open(QIODevice::ReadWrite) )
    {
        QTextStream stream( &file );
        stream << encoded;
    }

}

void MainWindow::decode(){
    QFile input("output.txt");
    if (input.open(QIODevice::ReadOnly)) {
        data_in = input.readAll();
    }
    QString strRestored(QByteArray::fromBase64(data_in));
    qDebug() << strRestored;
}

这样做我只得到了[[esczol35:11而不是[[śśćźół35:11

请帮助我获取开头输入的所有字符。 感谢

1 个答案:

答案 0 :(得分:0)

我怀疑问题不在Base64编码/解码中,因为它会准确地返回你每次放入的内容;这就是它的重点。我的信念是你打电话给你的#34;编码&#34;方法是转换字符串文字,或者toUtf8正在正确转换它。使用qDebug打印出每个步骤以查看问题所在,然后您可能需要查看QTextCodec类以正确设置转换。