如何防止“𠮷”运行SQL时出现乱码?

问题描述 投票:0回答:1

在Excel VBA中执行包含“𠮷”的SQL时,“𠮷”变成乱码。 有些字符,例如 💛,不会改变。

Sub DoSql() 

    Dim ws As Worksheet 
    Set ws = ThisWorkbook.Worksheets("SQL_local") 

    Dim con As Object 
    Set con = CreateObject("ADODB.Connection") 
    con.Open "locald8.2" 
    con.CursorLocation = 3 

    Dim rs As Object 
    Set rs = CreateObject("ADODB.Recordset") 

    Dim SQL As String 

    'SQL is set in cell of the "SQL_local" sheet. 
    'The SQL is "select test('𠮷');".
    '"test" is a function.
    SQL = ws.Cells(2, 2) 

    ws.Cells(5, 2).Clear 

Dim aryByte() As Byte 
aryByte = SQL 

    rs.Open SQL, con 
    ws.Cells(5, 2).CopyFromRecordset rs 

    rs.Close 
    Set rs = Nothing 
    Set con = Nothing 

    Call MsgBox("処理終了") 

End Sub 

・当我检查字节数组中变量“SQL”的值时,存储了“𠮷”的字符代码。 '𠮷'的字符代码:0xD842,0xDFB7 (UTF-16BE)

・ODBC日志输出SQL时出现“𠮷”乱码。

select test('𐮷');;
※乱码字符编码:0xD802,0xDFB7(UTF-16BE)

・Excel 版本为 365 MSO(版本 2302 内部版本 16.0.16130.20298)64 位。

・ODBC 版本是 MySQL ODBC 8.2 Unicode 驱动程序。

excel vba odbc
1个回答
0
投票

将所有查询写在单独的工作表中,然后使用

从那里将它们作为文本读取

Range().Value or Cells().value

它还将使您的应用程序更加动态和模块化。

© www.soinside.com 2019 - 2024. All rights reserved.