Maison >base de données >tutoriel mysql >Pourquoi est-ce que je vois des caractères \'????\' lors de la récupération de texte UTF-8 à partir de MySQL dans R ?

Pourquoi est-ce que je vois des caractères \'????\' lors de la récupération de texte UTF-8 à partir de MySQL dans R ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-03 18:05:29241parcourir

Why am I seeing

Récupération de texte UTF-8 à partir de MySQL dans R : décodage de "?????"

Récupération de texte encodé en UTF-8 à partir d'un La base de données MySQL dans R peut parfois entraîner "????" personnages. Pour résoudre ce problème, considérez les éléments suivants :

1. Vérifier l'encodage de la base de données

Assurez-vous que la table de base de données est définie avec le jeu de caractères et le classement appropriés. Par exemple, dans MySQL :

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

2. Définir l'encodage de connexion

Lors de l'établissement d'une connexion à une base de données dans R, spécifiez l'encodage de caractères correct.

RODBC :

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

RMySQL :

Connectez-vous d'abord, puis exécutez :

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

3. Convertir l'encodage des caractères

Après avoir récupéré les résultats, convertissez l'encodage des caractères de la colonne de chaîne en 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')

Remarques supplémentaires :

  • Assurez-vous que les paramètres régionaux du système par défaut sont définis sur UTF-8 .
  • Pour RMySQL, l'utilisation de dbSendQuery pour définir le codage des caractères est efficace pour toutes les requêtes ultérieures.
  • iconv peut également être utilisé pour transcoder des chaînes en UTF-8, mais son comportement peut varier en fonction du plateforme.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn