Rumah  >  Artikel  >  pangkalan data  >  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
Linda Hamiltonasal
2024-11-03 18:05:29191semak imbas

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;

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')

RMySQL:

Sambung dahulu dan kemudian jalankan:

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

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")

RMySQL:

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

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:
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