将sqlite原始数据读取到QByteArray中

时间:2019-03-04 13:46:09

标签: c++ qt sqlite qstring qbytearray

我有一个qsqlite,其中的一列包含原始数据。

代码

QByteArray data= query.value("data").toString().toLatin1();

QByteArray data= query.value("data").toByteArray();

给出除某些值外完全相同的正确结果。原始数据中的某些字节ara被转换为0x3F。 (我认为值大于某个值)

下面的代码给出的结果远远超出了实际数据。

data= query.value("data").toString().toUtf8()

我想念的是什么?

---编辑(已添加示例数据)

sqlite中的实际原始数据:

01 a4 81 1c 20 02 00 ff

query.value("data").toString().toByteArray() 

给予:

01 a4 81 1c 20 02 00 3f

query.value("data").toString().toUtf8() 

给予:

01 c2 a4 c2 81 1c 20 02 00 ef bf bd

顺便说一句,我要说的原始数据类型是sqlite数据库中的BLOB。

1 个答案:

答案 0 :(得分:1)

看看QString::toLatin1()的文档。如果输入字符串包含非Latin1字符,则未定义。我想这就是为什么某些值被0x3f(ASCII中的“?”)替换的原因。

您知道原始数据是否最初以任何编码形式表示字符序列?否则,我想将原始字节序列转换为特定的字符串编码没有多大意义。您可以尝试看看其他string encodings