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

VB应用SQLite数据库读取中文乱码

2013-01-08 
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

修改如下程序:


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 If
End Function

[解决办法]
实在不行就转换为字符串来用好了,比如二进制转为base64字符串,都是很成熟的东西


[解决办法]
sqlite论坛上有3个com类型的dll为什么不用,这个感觉很撮啊,虽然是绿色的
[解决办法]

引用:
不是全部检索不到结果,SELECT * FROM DATA 语句可以检索到记录,显示正常;
SELECT * FROM DATA WHERE NAME LIKE '%中国%'检索不到记录,但该语句在第三方工具的查询栏能够检索到数据。
用您23楼的方法仍然不行。

这样吧,我给你发一个驱动,一个库加上简单的测试代码

热点排行