MySQL:如何更改系统变量character_set_client?

时间:2014-09-05 15:26:42

标签: mysql excel-vba character-encoding non-ascii-characters vba

问题

  • 如何更改系统变量character_set_client

尝试

我尝试过的事情:

  1. %windir%\syswow64\odbcad32.exe
  2. 中更改字符集
  3. 更改连接字符串中的字符集(请参阅底部的代码)
  4. my.ini
  5. 中更改字符集
  6. 当我进行以下查询时

    SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%'
    

    来自客户端(Excel),character_set_client总是设置为utf8,无论我在连接字符串中定义什么字符集。

    第3项(my.ini)的更多细节:

    • 我了解为具有init_connect权限的用户设置SUPER does not apply
    • 我了解default-character-setdeprecated
    • 对于init_connect,我尝试了SET NAMES <charset>SET CHARACTER SET <charset>
    • 使用和不使用character-set-client-handshakeskip-character-set-client-handshake
    • 进行尝试

    设置

    • 台湾人
    • 中的Windows 7 Home
    • MySQL Server和Workbench in English
    • UTF8中的MySQL数据库和表
    • 对于连接字符串中的字符集,我尝试了big5gb2312gbklatin1。 UTF8给了我一个问题(如下所述)。

    (PS:我不知道我应该在客户端中定义哪个字符集!在其他使用英文版Windows的计算机中,将所有内容设置为utf8 worked。)


    最终目标(问题背后的原因)

    我希望能够将重音字符(如果可能的话,还有中文字符)从客户端(Excel)插入到数据库中。我可以在MySQL Workbench中执行此操作,但不能从Excel执行此操作(请参阅下面的错误)。


    错误

    当我尝试将重音字符从客户端(Excel)插入数据库时​​,我收到此错误:

    enter image description here

    Run-time error '-2147467259 (80004005)' Incorrect string value: '\xE3\xE3\xE3~~c...'


    客户端中的

    UTF8会产生错误的结果

    奇怪的是,当我在连接字符串中将charset定义为UTF8时,从服务器发送到客户端的结果将错误地呈现

    enter image description here

    当我设置除UTF8以外的许多字符集(上面引用的所有4个,可能还有其他字符集)时,我得到了正确的结果(但我仍然无法插入重音字符):

    enter image description here


    连接字符串(v1)

    (已经尝试过其他字符集,如前所述)

    Dim oConn       As ADODB.Connection
    Dim sConn       As String
    
    Set oConn = New ADODB.Connection
    sConn = "DRIVER={MySQL ODBC 5.3 Unicode Driver};" & _
            "SERVER=localhost;" & _
            "DATABASE=mydb;" & _
            "USER=myself;" & _
            "PASSWORD=mypass;" & _
            "OPTION=3;" & _
            "CHARSET=big5;"
    
    Call oConn.Open(sConn)
    

    连接字符串(v2)

    (使用DSN并在odbcad32中设置字符集)

    Dim oConn       As ADODB.Connection
    Dim sConn       As String
    
    Set oConn = New ADODB.Connection
    sConn = "DSN=myDSN;UID=myself;PWD=mypass;"
    
    Call oConn.Open(sConn)
    

    两个版本都有效但不允许我插入重音字符。

0 个答案:

没有答案