首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

VB使用SQLite数据库读取中文乱码,该如何处理

2012-03-31 
VB使用SQLite数据库读取中文乱码网上下载了一个VB使用SQLite数据库的实例,测试中发现以下问题:1.不支持BLO

VB使用SQLite数据库读取中文乱码
网上下载了一个VB使用SQLite数据库的实例,测试中发现以下问题:
1.不支持BLOB型数据读写;
2.中文读取乱码。实例提供了Unicode到UTF-8的编码函数,但没有UTF-8到Unicode的解码函数,所以存入中文经测试没有问题,但读取时出现乱码(全英文不出现问题)。

我把资源放到这个地址http://download.csdn.net/source/2881540

希望高手们帮忙解决一下。谢谢了!

[解决办法]
這個問我解決了,
// mSqlite.sqlite3_exec(f_lSqlite, "INSERT INTO data (Age , Name) VALUES (23, '中國人12') ") = SQLITE_OK

修改如下程序:

VB code
Public Function sqlite3_exec(ByVal sqlite3 As Long, ByVal zSql As String) As Long    'int sqlite3_exec(    '  sqlite3*,                                  /* An open database */    '  const char *sql,                           /* SQL to be evaluated */    '  int (*callback)(void*,int,char**,char**),  /* Callback function */    '  void *,                                    /* 1st argument to callback */    '  char **errmsg                              /* Error msg written here */    ');           Dim bvData()    As Byte    Dim lSize       As Long    Dim lRet        As Long        If LenB(zSql) Then        lSize = Len(zSql) * 4        ReDim bvData(lSize)            lRet = WideCharToMultiByte(CP_UTF8, 0, StrPtr(zSql), Len(zSql), bvData(0), lSize + 1, vbNullString, 0)            If lRet Then            ReDim Preserve bvData(lRet - 1)        End If    End If    If m_bLoaded Then        With m_cCDECL            sqlite3_exec = .CallFunc("sqlite3_exec", sqlite3, VarPtr(bvData(0)), 0, 0, 0)        End With    Else        sqlite3_exec = SQLITE_ERROR    End IfEnd Function
[解决办法]
实在不行就转换为字符串来用好了,比如二进制转为base64字符串,都是很成熟的东西
[解决办法]
sqlite论坛上有3个com类型的dll为什么不用,这个感觉很撮啊,虽然是绿色的
[解决办法]
探讨
不是全部检索不到结果,SELECT * FROM DATA 语句可以检索到记录,显示正常;
SELECT * FROM DATA WHERE NAME LIKE '%中国%'检索不到记录,但该语句在第三方工具的查询栏能够检索到数据。
用您23楼的方法仍然不行。

热点排行