各位好问题是这样的,我有一个需要被保存的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的内容不一样了,怎么解决呢?

解决方案 »

  1.   

    数据库的存储编码是UTF-8吗?
      

  2.   


    网上查了下,sqlite3的确是用的UTF-8。
      

  3.   

    试了一下,确是象楼主说的那样. 
    在用  String(b, "UTF-8");组成字符串的时候,对于不认识的字节都转换成了"-17,-65,-67"了.(ef,bf,bd).
    但对于有意义的字节吗,没问题。比如“中”字的utf-8码是:"-28,-72,-83",把这样的字节放入数组,就不会有问题。
      

  4.   

    byte转string要经过字符编码,不能保证字节原封不动
    或者你应该做成序列化
    也就是[0x01,0xf2,0xa3]类似这样的字节数组
    转换为->String[01f2a3]这样格式,然后往数据库存AND:sqlite可以直接字节数组的保存啊...直接用Blob类型不就行了吗
      

  5.   

    你为什么不直接存为bytes?
    setBytes(int parameterIndex, byte[] x) 
      

  6.   

    你为什么不直接存为bytes?
    setBytes(int parameterIndex, byte[] x) 
      

  7.   

    问题解决了,采用的是9楼朋友的方法,直接setBlob,把byte[]给直接存进去了,同时也感谢各位,结贴鸟。