用怎样的方法将byte[]的保存到db,才能使存入和读出的byte数组内容一致
各位好
问题是这样的,我有一个需要被保存的byte[],我将它形成String之后保存入sqlite3,之后再进入读取,但读出的byte[]和之前的不一样了。
存:
byte[] b1 = {...};
String str = new String(b, "UTF-8");
// 将str存入sqlite3了
读:
String str = 从db中读到str
byte[] b2 = str.getBytes("UTF-8");
b1和b2的内容不一样了,怎么解决呢?
------解决方案--------------------试了一下,确是象楼主说的那样.
在用 String(b, "UTF-8");组成字符串的时候,对于不认识的字节都转换成了"-17,-65,-67"了.(ef,bf,bd).
但对于有意义的字节吗,没问题。比如“中”字的utf-8码是:"-28,-72,-83",把这样的字节放入数组,就不会有问题。
------解决方案--------------------
byte转string要经过字符编码,不能保证字节原封不动
或者你应该做成序列化
也就是[0x01,0xf2,0xa3]类似这样的字节数组
转换为->String[01f2a3]这样格式,然后往数据库存
AND:sqlite可以直接字节数组的保存啊...直接用Blob类型不就行了吗
------解决方案--------------------你为什么不直接存为bytes?
setBytes(int parameterIndex, byte[] x)