R 将data.fame对象从latin1重新编码为utf-8

R 将data.fame对象从latin1重新编码为utf-8,r,utf-8,character-encoding,latin1,googlevis,R,Utf 8,Character Encoding,Latin1,Googlevis,我使用带有重音符号的数据的windows 7(我的系统:“LC_COLLATE=French_France.1252)。 我的数据是用ANSI编码的,这使我能够在Rstudio的选项卡中正确地显示它们 我的问题是:当我想创建一个GoogleVis页面(编码utf-8)时,重音字符显示不正确 我期望的是:在创建googleVis页面之前,我希望用R转换utf-8中的latin1 Data.frames。 我不知道。Stringi软件包似乎只处理原始数据 fr <- data.frame(âg

我使用带有重音符号的数据的windows 7(我的系统:“LC_COLLATE=French_France.1252)。
我的数据是用ANSI编码的,这使我能够在Rstudio的选项卡中正确地显示它们

我的问题是:当我想创建一个GoogleVis页面(编码utf-8)时,重音字符显示不正确

我期望的是:在创建googleVis页面之前,我希望用R转换utf-8中的latin1 Data.frames。 我不知道。Stringi软件包似乎只处理原始数据

fr <- data.frame(âge = c(15,20), prénom = c("Adélia", "Adão"), row.names = c("I1", "I2"))

print (fr)

library (googleVis)

test <- gvisTable(fr)
plot(fr)

fr在几个软件包中都有内置功能,例如
stringi
stringr
SoundexBR
tau
,以及R基本系统中的字符转换,这些功能可以用作:


text2@Wilcar什么东西不起作用?错误消息是什么?它对我来说很好,可能是你可以读取所需格式的数据,或者暂时更改系统的区域设置编码。我将在我的回答中添加额外内容。以下是3个屏幕截图:RStdudio提供了ansi数据的良好可视化效果,但不是在Google VI中s(看带口音的名字)。也许我不知道如何使用你的函数?[![import ansi][1][1][![Rstudio][2][2][![GoogleVis][3][3][1]:[2]:[3]:我发布了3个屏幕截图。在我最后的评论中。也许我没有正确使用你的函数:当重新编码我的d.f时。Rstudio中的数据可视化仍然很好。(系统windows 1252)这可能会很尴尬,但可能问题不在于R读取和存储字符串的方式,而在于sys locale GoogleVis从中继承了什么。请注意,在我上次编辑时,我甚至没有使用我建议的函数。一旦我使用UTF-8编码,我就用正确的编码加载数据。如果使用库(字符串)stri_enc_detect(test_ansi);stri_enc_isutf8(test_ansi);你得到了什么?你可能会出现编码反弹,这可能会给谷歌带来一些混乱。
# importing (historical data)
test_ansi<-read.table("databig_ansi.csv",
                header=TRUE, sep=",",
                na.strings="",
                quote = "\"",
                dec=".") 

# subsetting 
library (dplyr)
test_ansi <- 
   test_ansi %>%
   count(ownera)

# library (stringi)

  stri_enc_detect(test_ansi$ownera)

# visualisation
library (googleVis)

testvis <- gvisTable(test_ansi)
plot(testvis)
.fromto <- function (x, from, to)
{
    if (is.list(x)) {
    xattr <- attributes(x)
    x <- lapply(x, .fromto, from, to)
    attributes(x) <- xattr
    } else {
    if (is.factor(x)) {
        levels(x) <- iconv(levels(x), from, to, sub = "byte")
    } else {
        if (is.character(x))
        x <- iconv(x, from, to, sub = "byte")
    }
    lb <- attr(x, "label")
    if (length(lb) > 0) {
        attr(x, "label") <- iconv(attr(x, "label"), from, to, sub = "byte")
    }
    }
    x
}

# This will convert a vector from any encoding into UTF-8
Latin2UTF8 <- function (x, from = "WINDOWS-1252")
{
    .fromto(x, from, "UTF-8")
} 
Latin2UTF8(fr)
 âge prénom
I1  15 Adélia
I2  20   Adão
> Sys.getlocale()
[1] "en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8"


test_ansi<-read.table(file.choose(),
                       header=TRUE, sep=",",
                       na.strings="",
                        quote = "\"",
                        dec=".", fileEncoding = "LATIN1")

> test_ansi2 <- 
+     test_ansi %>%
+     count(ownera)
> test_ansi2
Source: local data frame [6,482 x 2]

                ownera n
1       Abautret (Vve) 1
2              Abazuza 1
3            Abernathy 1
4  Abrahamsen, Heerman 1
5  Abrahamsen, Hereman 6
6   Abrahamsz, Heerman 2
7         Abram, Ralph 8
8      Abrams, Heerman 2
9            Abranches 1
10               Abreu 1
..                 ... .

# visualisation
library (googleVis)


testvis <- gvisTable(test_ansi)
plot(testvis)