In un database MySQL, una tabella è codificata in utf8, ma per qualche motivo la connessione è in latin1.Come modificare la codifica della connessione dplyr :: tbl su utf8?
res <- RMySQL::dbSendQuery(con,"show variables like 'character_set_%'")
dbFetch(res)
Variable_name Value
1 character_set_client latin1
2 character_set_connection latin1
3 character_set_database utf8mb4
4 character_set_filesystem binary
5 character_set_results latin1
6 character_set_server latin1
7 character_set_system utf8
8 character_sets_dir /usr/share/mysql/charsets/
This page explain how to set the connection's character set to utf8 using RMySQL.
RMySQL::dbGetQuery(con,"show variables like 'character_set_%'")
RMySQL::dbGetQuery(con,"set names utf8")
Ma io in realtà preferiscono utilizzare il dplyr::tbl
per interrogare il database. Poiché la connessione creata da dplyr::src_mysql
ha solo la possibilità di inviare istruzioni SQL che creano tabelle. Qual è il modo dplyr per impostare le impostazioni di connessione per utilizzare la codifica utf8?
Hai visto questo? http://stackoverflow.com/questions/25934752/utf-8-encoding-with-dplyr-and-sqlite –
@ RomanLuštrik L'ho visto grazie, converto anche colonne di caratteri in utf8 usando una soluzione ad-hoc con ' iconv() 'ma è un hack e preferisco leggere i vettori di caratteri direttamente in utf8. Soprattutto perché il database è già in utf8. –
Sento il tuo dolore. La codifica è un pericolo per chiunque lavori con dati non latini1. –