How to avoid encoding problems when taking data with TwitteR?

4

I'm getting Twitter data with the twitteR package for but the tweets are coming with encoding problem. Does anyone know how to work around this problem?

library(twitteR)
library(stringr)
library(ROAuth)
library(RCurl)

options(RCurlOptions = list(cainfo = system.file("CurlSSL", "cacert.pem", package = "RCurl")))


setwd("XXXXXXXXX")

download.file(url="http://curl.haxx.se/ca/cacert.pem",destfile="cacert.pem")

cred <- OAuthFactory$new(consumerKey='XXXXXXXXXXXXXX',
                         consumerSecret='XXXXXXXXXXXX',
                         requestURL='https://api.twitter.com/oauth/request_token',
                         accessURL='https://api.twitter.com/oauth/access_token',
                         authURL='http://api.twitter.com/oauth/authorize')

cred$handshake(cainfo="cacert.pem")

registerTwitterOAuth(cred)

tweets = searchTwitter("#Copa2014", n=200, cainfo="cacert.pem")

Tweets.text = laply(tweets,function(t)t$getText())

The data is coming this way, with problems in accents and cedillas:

head(Tweets.text)
[1] "Não fui sorteado dessa vez, mas dia 12/03 começa uma nova fase de vendas... #copa2014"                                                       
[2] "RT @obsate: @RodP13 @gugakuerten A #Copa2014 virou a Geni; todo mundo bate nela. Agora a copa tem de resolver todos os problemas do BR. Pia…"
[3] "@RodP13 @gugakuerten A #Copa2014 virou a Geni; todo mundo bate nela. Agora a copa tem de resolver todos os problemas do BR. Piada!"            
[4] "Nem pra saude! \"@mordomoeugenio: Bilhão de reais pra ensino público não tem né #copa2014 #JN\""                                           
[5] "RT @soldadonofront: \"@fsouzajrJuca: Quanto mais eu leio sobre esses grupos que protestam contra a Copa, mais eu simpatizo com a #Copa2014.\"" 
[6] "\"@fsouzajrJuca: Quanto mais eu leio sobre esses grupos que protestam contra a Copa, mais eu simpatizo com a #Copa2014.\""   

I'm using:

  

Rstudio 0.98.501
  R version 3.0.2 (2013-09-25)
  Platform: x86_64-w64-mingw32 / x64 (64-bit)

PS: The problem is apparently occurring in Windows 7. Following instructions from Luis Cipriani and running the code on Linux, there were no encoding problems. The question still remains to avoid problems in Windows,

    
asked by anonymous 21.02.2014 / 03:06

3 answers

4

I do not know if there is any way to permanently solve character encoding problems. There are several factors that hinder correct encoding identification. On a particular web page, the coding that is reported to the browser in the META tag (within the HEAD section) may not be the encoding actually used; there are still the local settings of your computer; the encoding that was set as the default within R, etc.

The general tip is as follows: Portuguese texts are usually encoded as "latin1" or "latin2". So you can test some conversions between coding systems.

See an example using your data:

    tweets <- c("Não fui sorteado dessa vez, mas dia 12/03 começa uma nova fase de vendas... #copa2014",
    "RT @obsate: @RodP13 @gugakuerten A #Copa2014 virou a Geni; todo mundo bate nela. Agora a copa tem de resolver todos os problemas do BR. Pia…",
    "@RodP13 @gugakuerten A #Copa2014 virou a Geni; todo mundo bate nela. Agora a copa tem de resolver todos os problemas do BR. Piada!",
    "Nem pra saude! \"@mordomoeugenio: Bilhão de reais pra ensino público não tem né #copa2014 #JN\"",
    "RT @soldadonofront: \"@fsouzajrJuca: Quanto mais eu leio sobre esses grupos que protestam contra a Copa, mais eu simpatizo com a #Copa2014.\"",
    "\"@fsouzajrJuca: Quanto mais eu leio sobre esses grupos que protestam contra a Copa, mais eu simpatizo com a #Copa2014.\"")

Now I execute the following:

    iconv(tweets, from="UTF-8", to="latin1//TRANSLIT")

And I get:

    [1] "Não fui sorteado dessa vez, mas dia 12/03 começa uma nova fase de vendas... #copa2014"                                                        
    [2] "RT @obsate: @RodP13 @gugakuerten A #Copa2014 virou a Geni; todo mundo bate nela. Agora a copa tem de resolver todos os problemas do BR. Pia." 
    [3] "@RodP13 @gugakuerten A #Copa2014 virou a Geni; todo mundo bate nela. Agora a copa tem de resolver todos os problemas do BR. Piada!"           
    [4] "Nem pra saude! \"@mordomoeugenio: Bilhão de reais pra ensino público não tem né #copa2014 #JN\""                                              
    [5] "RT @soldadonofront: \"@fsouzajrJuca: Quanto mais eu leio sobre esses grupos que protestam contra a Copa, mais eu simpatizo com a #Copa2014.\""
    [6] "\"@fsouzajrJuca: Quanto mais eu leio sobre esses grupos que protestam contra a Copa, mais eu simpatizo com a #Copa2014.\""       

It worked.

Other test options could be:

    iconv(tweets, from="UTF-8", to="latin2//TRANSLIT")
    iconv(tweets, from="UTF-8", to="latin1")
    iconv(tweets, from="UTF-8", to="latin2")

I helped?

    
22.09.2014 / 12:44
1

Hello, I've circled your code in the following configuration:

RStudio: 0.98.501
R version 3.0.1 (2013-05-16)
platform: Darwin Kernel Version 13.1.0: Thu Jan 16 19:40:37 PST 2014; root:xnu-2422.90.20~2/RELEASE_X86_64 x86_64 (Mac)
Versões das bibliotecas:
    twitteR 1.1.7 (from CRAN)
    stringr 0.6.2
    ROauth 0.9.3
    RCurl 1.95-4.1
    rjson 0.2.13

And the result was:

> tweets
[[1]]
[1] "sigaCopa2014: 11h10. Arena da Baixada terá evento-teste em março - Via Portal 2014 http://t.co/GmhnF87ji2 #copa2014"

[[2]]
[1] "_copadomundo_: #futebol #copa2014 Eto'o ironiza boatos sobre sua idade usando seus gols no Chelsea como argumento: Gazeta Ata... http://t.co/4YkV7g1Wgv"

[[3]]
[1] "_copadomundo_: #futebol #copa2014 Apesar de empate, Renato Gaúcho aprova quarteto ofensivo do Fluminense: Gazeta Flu encarou ... http://t.co/Co0MmJCEC1"

See that the accents are ok, so it does not seem to be a TwitteR problem. Could you send your versions of libs?

    
27.02.2014 / 15:22
0

I dealt with this same situation and found it to be Double Enconding . So just remove it by opening two times and then bringing back to the ideal format.

PROBLEM: DOUBLE ENCODING

campo1_txt = iconv(Tweets.text, to="latin1", from="utf-8")

FIXED WITH DOUBLE-DECODING

campo1_txt = iconv(campo1_txt, to="latin1", from="utf-8")

RECOVER TO FOCUS ON CORRECT INFORMATION

campo1_txt = iconv(campo1_txt, to="UTF-8", from="latin1")

From here you can proceed normally as it will work.

    
22.09.2014 / 20:08