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
239 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!

sumber:php.cn
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