Rumah > pangkalan data > tutorial mysql > Mengapa saya melihat aksara \'?????\' apabila mendapatkan semula teks UTF-8 daripada MySQL dalam R?

Mengapa saya melihat aksara \'?????\' apabila mendapatkan semula teks UTF-8 daripada MySQL dalam R?

Linda Hamilton
Lepaskan: 2024-11-03 18:05:29
asal
258 orang telah melayarinya

Why am I seeing

UTF-8 Text Retrieval daripada MySQL dalam R: Decoding "?????"

Mengambil semula teks yang dikodkan UTF-8 daripada Pangkalan data MySQL ke dalam R kadangkala boleh menghasilkan "?????" watak. Untuk menyelesaikan isu ini, pertimbangkan perkara berikut:

1. Sahkan Pengekodan Pangkalan Data

Pastikan jadual pangkalan data ditakrifkan dengan set aksara dan penyusunan yang sesuai. Contohnya, dalam MySQL:

CREATE TABLE test (str VARCHAR(10)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Salin selepas log masuk

2. Tetapkan Pengekodan Sambungan

Apabila membuat sambungan pangkalan data dalam R, nyatakan pengekodan aksara yang betul.

RODBC:

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

RMySQL:

Sambung dahulu dan kemudian jalankan:

dbConnect(MySQL(), user='root')
dbSendQuery(con, 'SET NAMES utf8')
Salin selepas log masuk

3. Tukar Pengekodan Aksara

Selepas mendapatkan semula keputusan, tukar pengekodan aksara lajur rentetan kepada UTF-8.

RODBC:

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

RMySQL:

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

Nota Tambahan:

  • Pastikan tempat sistem lalai ditetapkan kepada UTF-8 .
  • Untuk RMySQL, menggunakan dbSendQuery untuk menetapkan pengekodan aksara adalah berkesan untuk semua pertanyaan berikutnya.
  • iconv juga boleh digunakan untuk mengubah kod rentetan kepada UTF-8, tetapi kelakuannya boleh berbeza-beza bergantung pada platform.

Atas ialah kandungan terperinci Mengapa saya melihat aksara \'?????\' apabila mendapatkan semula teks UTF-8 daripada MySQL dalam R?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan