J'essaie de lire le fichier codé UTF-8 suivant dans R, mais chaque fois que je le lis, les caractères unicode ne sont pas codés correctement:
Le script que j'utilise pour traiter le fichier est le suivant:
defaultEncoding <- "UTF8"
detalheVotacaoMunicipioZonaTypes <- c("character", "character", "factor", "factor", "factor", "factor", "factor",
"factor", "factor", "factor", "factor", "factor", "numeric",
"numeric", "numeric", "numeric", "numeric", "numeric",
"numeric", "numeric", "numeric", "numeric", "numeric",
"numeric", "character", "character")
readDetalheVotacaoMunicipioZona <- function( fileName ) {
fileConnection = file(fileName,encoding=defaultEncoding)
contents <- readChar(fileConnection, file.info(fileName)$size)
close(fileConnection)
contents <- gsub('"', "", contents)
columnNames <- c("data_geracao", "hora_geracao", "ano_eleicao", "num_turno", "descricao_eleicao", "sigla_uf", "sigla_ue",
"codigo_municipio", "nome_municipio", "numero_zona", "codigo_cargo", "descricao_cargo", "qtd_aptos",
"qtd_secoes", "qtd_secoes_agregadas", "qtd_aptos_tot", "qtd_secoes_tot", "qtd_comparecimento",
"qtd_abstencoes", "qtd_votos_nominais", "qtd_votos_brancos", "qtd_votos_nulos", "qtd_votos_legenda",
"qtd_votos_anulados", "data_ult_totalizacao", "hora_ult_totalizacao")
read.csv(text=contents,
colClasses=detalheVotacaoMunicipioZonaTypes,
sep=";",
col.names=columnNames,
fileEncoding=defaultEncoding,
header=FALSE)
}
Je lis le fichier envoyé dans le codage UTF-8, supprime tous les guillemets (même les nombres sont cités, il faut donc les nettoyer), puis je passe le contenu à read.csv
. Il lit et traite le fichier correctement, mais il semble que les informations d'encodage que je lui donne ne soient pas utilisées.
Que dois-je faire pour qu'il utilise UTF-8 pour lire ce fichier?
J'utilise RStudio sur OSX si cela fait une différence.
Ce problème est dû au mauvais paramétrage de l'environnement local, que ce soit à l'intérieur de RStudio ou de la ligne de commande R:
Si le problème ne se produit que dans RStudio pas sur la ligne de commande R, accédez à RStudio-> Préférences: Général, indiquez-nous le paramètre "Codage de texte par défaut:", cliquez sur "Modifier" et essayez Windows-1252, UTF. -8 ou ISO8859-1 ('latin1') (ou 'Demander' si vous voulez toujours être invité). Capture d'écran en bas. Faites-nous savoir lequel a fonctionné!
Si le problème se produit également dans la ligne de commande R , procédez comme suit:
Faites locale -m
sur votre Mac et dites-nous s'il prend en charge le CP1252 ou bien la norme ISO8859-1 ('latin1')? Videz la liste des paramètres régionaux pris en charge si vous en avez besoin. (Vous pourriez aussi bien nous dire votre version de MacOS pendant que vous y êtes.)
Pour ces deux paramètres régionaux, essayez de modifier ce paramètre:
# first try Windows CP1252, although that's almost surely not supported on Mac:
Sys.setlocale("LC_ALL", "pt_PT.1252") # Make sure not to omit the `"LC_ALL",` first argument, it will fail.
Sys.setlocale("LC_ALL", "pt_PT.CP1252") # the name might need to be 'CP1252'
# next try IS08859-1(/'latin1'), this works for me:
Sys.setlocale("LC_ALL", "pt_PT.ISO8859-1")
# Try "pt_PT.UTF-8" too...
# in your program, make sure the Sys.setlocale worked, sprinkle this assertion in your code before attempting to read.csv:
stopifnot(Sys.getlocale('LC_CTYPE') == "pt_PT.ISO8859-1")
Cela devrait fonctionner . Strictement, la commande Sys.setlocale()
devrait figurer dans votre ~/.Rprofile
pour le démarrage, pas dans votre session R ou code source . Cependant, Sys.setlocale()
peut échouer, soyez donc conscient de cela. En outre, assertez Sys.getlocale()
dans votre code d'installation tôt et souvent, comme je le fais. (En réalité, read.csv
devrait déterminer si le codage utilisé est compatible avec les paramètres régionaux et avertir ou commettre une erreur dans le cas contraire).
Faites-nous savoir quel correctif a fonctionné! J'essaie de documenter ceci de manière plus générale afin que nous puissions trouver le bon renforcement.
Ça fonctionne bien pour moi.
Avez-vous essayé de changer/réinitialiser les paramètres régionaux?
dans mon cas ça marche avec
Sys.setlocale(category = "LC_ALL", locale = "Portuguese_Portugal.1252")
d <- read.table(text=readClipboard(), header=TRUE, sep = ';')
head(d)
1 25/04/2014 22:29:30 2012 1 ELEIÇÃO MUNICIPAL 2012 PB 20419 20419 ITAPORANGA 33 13 VEREADOR 17157
2 25/04/2014 22:29:30 2012 1 ELEIÇÃO MUNICIPAL 2012 PB 20770 20770 MALTA 51 11 PREFEITO 4677
3 25/04/2014 22:29:30 2012 1 ELEIÇÃO MUNICIPAL 2012 PB 21091 21091 OLHO D'ÁGUA 32 13 VEREADOR 6653
4 25/04/2014 22:29:30 2012 1 ELEIÇÃO MUNICIPAL 2012 PB 21113 21113 OLIVEDOS 23 13 VEREADOR 3243
...
J'ai eu le même problème avec les paramètres régionaux portugais dans r (MAC OS 10.12.3) J'ai essayé comme par le fil ci-dessus et personne n'a fonctionné. Ensuite, j'ai trouvé cette page Web: https://docs.moodle.org/dev/Table_of_locales Et juste essayé Sys.setlocale(category = "LC_ALL", locale = "pt_PT.UTF-8")
et cela fonctionne.
Vous devriez essayer les fonctions library(readr)
, telles que read_csv()
ou read_fwf()
(notez le trait de soulignement au lieu du point). ces fonctions de lecture sont regroupées dans la fonction "import dataset" de l'interface graphique RStudio