苏飞论坛

标题: 在SQLite存储的blob类型转换为字符串乱码 [打印本页]

作者: 秋天童话    时间: 2013-7-23 14:25
标题: 在SQLite存储的blob类型转换为字符串乱码
在SQLite存储的blob类型转换为字符串乱码:         
  DataTable dt = SQLiteDB.getChatRecord(messageInfo);
            richText_InfoRecord.Clear();

            if (dt != null && dt.Rows.Count > 0)
            {
                foreach (DataRow dr in dt.Rows)
                {
                    //聊天时间
                    richText_InfoRecord.Select(richText_InfoRecord.TextLength, 0);
                    string s = dr[0].ToString() + "   ";
                    //联系人
                    string s1= dr[1].ToString();
                    richTextBox1.Text = s1;
                    richText_InfoRecord.SelectedRtf = richTextBox1.Rtf;
                    s += s1 ;


                    //聊天记录
                    byte[] bytes = (byte[])dr[3];

                    richText_InfoRecord.Select(richText_InfoRecord.TextLength, 0);
                   // richText_InfoRecord.SelectedRtf = Encoding.Unicode.GetString(bytes);
                    s += Encoding.Unicode.GetString(bytes);
                    richText_InfoRecord.ScrollToCaret();
                    richText_InfoRecord.Rtf = s;
                }
            }
我向将时间、聊天人、聊天信息放在一个字符串里,但这样总是出现格式错误,希望改正。
作者: 站长苏飞    时间: 2013-7-23 14:33
Encoding.Unicode.GetString(bytes); 你这里使用的是Unicode编码
在Encoding类里还有好多编码方式比如UT-8 Gb2312 ASCII等编码,你测试一下别的,
这个只有找到相应的编码才能解决,你做个测试吧。说多也没几个应该能测试出来那个编码是正确的
作者: 秋天童话    时间: 2013-7-23 16:47
站长苏飞 发表于 2013-7-23 14:33
Encoding.Unicode.GetString(bytes); 你这里使用的是Unicode编码
在Encoding类里还有好多编码方式比如UT-8 ...

谢谢你的帮忙。希望能够尽快解决!谢了
作者: 秋天童话    时间: 2013-7-23 17:03
秋天童话 发表于 2013-7-23 16:47
谢谢你的帮忙。希望能够尽快解决!谢了

还是不可以,换了Unicode就报格式错误!不过还是很谢谢你




欢迎光临 苏飞论坛 (http://www.sufeinet.com/) Powered by Discuz! X3.4