Heim >Datenbank >MySQL-Tutorial >Warum sehe ich \'?????\'-Zeichen, wenn ich UTF-8-Text aus MySQL in R abrufe?

Warum sehe ich \'?????\'-Zeichen, wenn ich UTF-8-Text aus MySQL in R abrufe?

Linda Hamilton
Linda HamiltonOriginal
2024-11-03 18:05:29243Durchsuche

Why am I seeing

UTF-8-Textabruf von MySQL in R: Dekodierung von „?????“

Abruf von UTF-8-codiertem Text aus einem MySQL-Datenbank in R kann manchmal zu „?????“ führen Charaktere. Um dieses Problem zu beheben, beachten Sie Folgendes:

1. Überprüfen Sie die Datenbankkodierung

Stellen Sie sicher, dass die Datenbanktabelle mit dem richtigen Zeichensatz und der richtigen Sortierung definiert ist. Zum Beispiel in MySQL:

CREATE TABLE test (str VARCHAR(10)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2. Verbindungskodierung festlegen

Geben Sie beim Herstellen einer Datenbankverbindung in R die richtige Zeichenkodierung an.

RODBC:

con <- odbcDriverConnect('DRIVER=mysql;user=root', CharSet='utf8')

RMySQL:

Zuerst verbinden und dann ausführen:

dbConnect(MySQL(), user='root')
dbSendQuery(con, 'SET NAMES utf8')

3. Zeichenkodierung konvertieren

Konvertieren Sie nach dem Abrufen der Ergebnisse die Zeichenkodierung der Zeichenfolgenspalte in UTF-8.

RODBC:

res <- sqlQuery(con, 'SELECT * FROM rtest.test')
res$str <- iconv(res$str, "UTF-8-Mac")

RMySQL:

res <- dbGetQuery(con, 'SELECT * FROM rtest.test')
res$str <- as.character(res$str, encoding = 'UTF-8')

Zusätzliche Hinweise:

  • Stellen Sie sicher, dass das Standardsystemgebietsschema auf UTF-8 eingestellt ist .
  • Für RMySQL ist die Verwendung von dbSendQuery zum Festlegen der Zeichenkodierung für alle nachfolgenden Abfragen wirksam.
  • iconv kann auch zum Transkodieren von Zeichenfolgen in UTF-8 verwendet werden, sein Verhalten kann jedoch je nach variieren Plattform.

Das obige ist der detaillierte Inhalt vonWarum sehe ich \'?????\'-Zeichen, wenn ich UTF-8-Text aus MySQL in R abrufe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn