UTF-8-Codierungsprobleme mit R

Versuche, Senatsaussagen des mexikanischen Senats zu analysieren, habe aber Probleme mit UTF-8-Codierungen der Webseite.

Dieser HTML kommt klar durch:

library(rvest)
Senate<-html("http://comunicacion.senado.gob.mx/index.php/informacion/versiones/19675-version-estenografica-de-la-reunion-ordinaria-de-las-comisiones-unidas-de-puntos-constitucionales-de-anticorrupcion-y-participacion-ciudadana-y-de-estudios-legislativos-segunda.html")

Hier ist ein Beispiel für einen Teil der Webseite:

"CONTINÚA EL SENADOR CORRAL JURADO: Nosotros decimos. Entonces, bueno, el tema es que hay dos rutas señor presidente y también tratar, por ejemplo, de forzar ahora.   Una decisión de pre dictamen a lo mejor lo único que va a hacer es complicar más las cosas."

Wie zu sehen ist, kommen beide Akzente und das "ñ" gut durch.

Das Problem tritt in einigen anderen HTML-Dateien (derselben Domain!) Auf. Beispielsweise

 Senate2<-html("http://comunicacion.senado.gob.mx/index.php/informacion/versiones/14694-version-estenografica-de-la-sesion-de-la-comision-permanente-celebrada-el-13-de-agosto-de-2014.html")

Ich bekomme

 "-EL C. DIPUTADO ADAME ALEMÃÂN: En consecuencia está a discusión la propuesta. Y para hablar sobre este asunto, se le concede el uso de la palabra a la senadora…….."

In diesem zweiten Teil habe ich versucht, iconv () und den Kodierungsparameter in html () auf encoding = "UTF-8" zu setzen, aber immer die gleichen Ergebnisse zu erzielen.

Ich habe auch die Webseitencodierung mit @ überprüf W3 Validator und es scheint UTF-8 zu sein und keine Probleme zu haben.

Die Verwendung von gsub scheint nicht effizient zu sein, da die Codierung verschiedene Zeichen mit demselben "Code" herunterlädt:

í - ÃÂ
á - ÃÂ
ó - ÃÂ

Pretty viel frisch aus Ideen.

> sessionInfo()
R version 3.1.2 (2014-10-31)
Platform: x86_64-w64-mingw32/x64 (64-bit)

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252    LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                           LC_TIME=English_United States.1252    

attached base packages:
[1] grDevices utils     datasets  graphics  stats     grid      methods   base     

other attached packages:
 [1] stringi_0.4-1    magrittr_1.5     selectr_0.2-3    rvest_0.2.0      ggplot2_1.0.0    geosphere_1.3-11 fields_7.1      
 [8] maps_2.3-9       spam_1.0-1       sp_1.0-17        SOAR_0.99-11     data.table_1.9.4 reshape2_1.4.1   xlsx_0.5.7      
[15] xlsxjars_0.6.1   rJava_0.9-6     

loaded via a namespace (and not attached):
 [1] bitops_1.0-6     chron_2.3-45     colorspace_1.2-4 digest_0.6.8     evaluate_0.5.5   formatR_1.0      gtable_0.1.2    
 [8] httr_0.6.1       knitr_1.8        lattice_0.20-29  MASS_7.3-35      munsell_0.4.2    plotly_0.5.17    plyr_1.8.1      
[15] proto_0.3-10     Rcpp_0.11.3      RCurl_1.95-4.5   RJSONIO_1.3-0    scales_0.2.4     stringr_0.6.2    tools_3.1.2     
[22] XML_3.98-1.1    

AKTUALISIEREN Dies scheint das Problem zu sein:

stri_enc_mark(Senate2)
[1] "ASCII"  "latin1" "latin1" "ASCII"  "ASCII"  "latin1" "ASCII"  "ASCII"  "latin1"

... und so weiter. Klar ist das Problem in latin1:

stri_enc_isutf8(texto2)
    [1]  TRUE FALSE FALSE  TRUE  TRUE FALSE  TRUE  TRUE FALSE

Wie kann ich latin1 zwingen, UTF-8-Zeichenfolgen zu korrigieren? Wenn es von stringi "übersetzt" wird, scheint es falsch zu sein, was mir die zuvor beschriebenen Probleme verdeutlicht.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage