在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 驱动程序。
将所有查询写在单独的工作表中,然后使用
从那里将它们作为文本读取Range().Value or Cells().value
它还将使您的应用程序更加动态和模块化。