发新话题
打印

vb显示MYSQL数据库中的中文数据乱码的问题.

vb显示MYSQL数据库中的中文数据乱码的问题.

请教各位高手,我的数据库是MYSQL5免安装版本的.
在命令行中运行结果如下所示:
mysql> set names 'gb2312';
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like 'character_set_%';
+--------------------------+--------------------------+
| Variable_name            | Value                    |
+--------------------------+--------------------------+
| character_set_client     | gb2312                   |
| character_set_connection | gb2312                   |
| character_set_database   | utf8                     |
| character_set_filesystem | binary                   |
| character_set_results    | gb2312                   |
| character_set_server     | utf8                     |
| character_set_system     | utf8                     |
| character_sets_dir       | E:\mysql\share\charsets\ |
+--------------------------+--------------------------+
8 rows in set (0.00 sec)
mysql> select * from postural1.aa;
+----+--------+--------+
| id | field1 | field2 |
+----+--------+--------+
|  1 | 娄      | 能仓      |
+----+--------+--------+
1 row in set (0.00 sec)
显示正常,但是在VB6程序里的代码如下:
    Dim cnn1 As ADODB.Connection
    Dim ADOError As Error
    Dim rstEmployees As ADODB.Recordset
    Dim strSel As String
   
    strSel = "select * from aa"
    ' 打开连接。
    Set cnn1 = New ADODB.Connection
    strCnn = "driver=MySQL Connector/ODBC v5;" & _
                    "server=127.0.0.1;" & _
                    "database=postural1;" & _
                    "uid=root;" & _
                    "pwd="
    '加上这句记录才能用MOVELASE移动记录
    cnn1.CursorLocation = adUseClient
    cnn1.Open strCnn
    cnn1.Execute ("SET NAMES 'gb2312'")
   Set rstEmployees = New ADODB.Recordset
   rstEmployees.CursorType = adOpenKeyset
   rstEmployees.LockType = adLockOptimistic
    '打开记录集的方法1
   rstEmployees.Open "aa", cnn1, , , adCmdTable
   
    Dim i As Long
    rstEmployees.MoveLast
    i = rstEmployees.RecordCount
   
    '关闭记录和连接
    rstEmployees.Close
    cnn1.Close
    Set rstEmployees = Nothing
    Set cnn1 = Nothing
执行结果如下:
?rstEmployees(0) rstEmployees(1)      rstEmployees(2)
1                |                                    ?????
请问各位是什么原因?

TOP

问一下,你那个执行结果在什么位置执行呢?怎么没看到有哪个语句体现出来?
注意不要在关闭记录和连接之后查看rstEmployees(i)的值

TOP

在立即窗口中执行的.断点设在 i = rstEmployees.RecordCount
用ASP连接的话,网页默认的是GB2312编码.这时还是乱码.但是把网页的编码改成Unicode后就不乱码了.请问这是怎么回事?

[ 本帖最后由 lnc2008 于 2007-5-17 12:37 编辑 ]

TOP

应该是VB转换的时候出了问题。VB自动转换内码的功能好像不是做得很好

TOP

发新话题