Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Sterownik ODBC Windows - pobrane dane emoji renderowane jako?

O ile mi wiadomo, jedynym sposobem pobrania dodatkowych znaków Unicode (np. emoji) za pomocą ADODB i MySQL Connector/ODBC jest pobranie ich jako bajtów — SELECT CAST(column_name AS BINARY) — a potem je rozszyfrować. Poniższy przykład to w rzeczywistości VBA, ale dostosowanie go do VBScript jest trywialne.

Option Explicit

Sub demo_retrieve_utf8mb4_value()
    Dim conn As New ADODB.Connection
    conn.Open _
        "DRIVER=MySQL ODBC 8.0 Unicode Driver;" & _
        "SERVER=localhost;PORT=3307;" & _
        "UID=root;PWD=(whatever);" & _
        "DATABASE=mydb;" & _
        "charset=utf8mb4;"
    Dim rst As New ADODB.Recordset
    rst.Open "SELECT CAST(emoji AS BINARY) FROM emoji_tbl WHERE id=1", conn
    Dim s As Variant
    s = decode_utf8(rst.Fields(0).Value)
    '
    ' do stuff with the string value

End Sub

Private Function decode_utf8(field_value As Variant) As Variant
    If IsNull(field_value) Then
        decode_utf8 = Null
    Else
        Dim strm As New ADODB.Stream
        With strm
            .Type = adTypeBinary
            .Open
            .Write field_value
            .Flush
            .Position = 0
            .Type = adTypeText
            .Charset = "UTF-8"
            decode_utf8 = .ReadText
            .Close
        End With
        Set strm = Nothing
    End If
End Function


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nieznana kolumna Laravela „updated_at”

  2. Przetestuj pod kątem wartości NULL w wielu kolumnach w MySQL

  3. max_allowed_packet, nie mam MySQL

  4. Jak uciec dosłowny znak procentu, gdy włączona jest opcja NO_BACKSLASH_ESCAPES?

  5. Jednostki daty i czasu w MySQL (pełna lista)