Luis Otavio Fernandes
Luis Otavio Fernandes

Reputation: 161

Encoding issue when reading latin characters

I need to read some txt tables in my shiny app and some columns of it are text. When I read a table with latin characters (á,â,ó,é,ô,ç...) it appears �. I think I need to read it using UTF-8 as encoding, I tried the following codes, but it does not work for me.

test<-read.delim("test.txt",sep="\t",dec=",",header=TRUE, encoding="UTF-8") or
test<-read.table(file = "test.txt", dec = ",", fileEncoding = "utf-8")

Here a short script to reproduce my problem:

x<- matrix(c('áeiou','aêiou','aeíou','aeiõu','aeiouç',1:5),ncol=2)
write.table(x,"test.txt",sep="\t")
test<-read.delim("test.txt",sep="\t",header=TRUE)

I´m using a Windows OS and I have this infos:

localeToCharset()
[1] "ISO8859-1"


sessionInfo()
R version 3.1.1 (2014-07-10)
Platform: i386-w64-mingw32/i386 (32-bit)

locale:
  [1] LC_COLLATE=Portuguese_Brazil.1252  LC_CTYPE=Portuguese_Brazil.1252   
[3] LC_MONETARY=Portuguese_Brazil.1252 LC_NUMERIC=C                      
[5] LC_TIME=Portuguese_Brazil.1252  

Thanks in advance!!

Upvotes: 0

Views: 1120

Answers (1)

jdharrison
jdharrison

Reputation: 30425

Works for me:

> Sys.getlocale()
[1] "LC_COLLATE=English_Ireland.1252;LC_CTYPE=English_Ireland.1252;LC_MONETARY=English_Ireland.1252;LC_NUMERIC=C;LC_TIME=English_Ireland.1252"
> x<- matrix(c('áeiou','aêiou','aeíou','aeiõu','aeiouç',1:5),ncol=2)
> write.table(x,"test.txt",sep="\t")
> test<-read.delim("test.txt",sep="\t",header=TRUE)
> test
      V1 V2
1  áeiou  1
2  aêiou  2
3  aeíou  3
4  aeiõu  4
5 aeiouç  5
> sessionInfo()$platform
[1] "x86_64-w64-mingw32/x64 (64-bit)"

try

Sys.setlocale(category = "LC_ALL", locale = "English_Ireland.1252")

or some similar locale.

Upvotes: 1

Related Questions