如何将默认的UTF-8编码更改为LATIN1

3

首次来电。
我只想将字符串编码从UTF-8更改为LATIN1。我使用XPath从网页中检索数据:

>library(RCurl)  
>library(rvest)
>library(XML)
>library(httr)
>library(reshape2)
>library(reshape)

>response <- GET(paste0("http://www.visalietuva.lt/imone/jogminda-uab-telsiai-muziejaus-g-35"))
>doc <- content(response,type="text/html")
>base <- xpathSApply(doc, "//ul//li//span",xmlValue)[5]

作为结果,我得到以下内容:
>base
[1] "El. paštas"

当我检查编码时,我的编码是UTF-8:

>Encoding(base)
[1] "UTF-8"

我怀疑我需要使用LATIN1编码。这样结果将会是"El. paštas",而不是"El. paÅ¡tas"

尽管当我指定LATIN1编码时,我得到了以下结果:

>latin <- iconv(base, from = "UTF-8", to = "LATIN1")
[1] "El. paštas"

即使用UTF-8编码也无法获得与之相同的结果。更改编码方式不能获得"El. paštas"

此外,我在保存数据到.csv文件时需要正确的LATIN1编码。我尝试将数据保存到.csv文件:

write.table(latin,file = "test.csv")

如果你遇到了和上面提到的一样的奇怪字符:"El. paÅ¡tas",那么该怎么改变编码呢?欢迎提供任何建议。谢谢。

1个回答

0

尝试

doc <- content(response,type="text/html", encoding = "UTF-8")

谢谢。这回答了问题的第一部分。现在我可以使用正确的编码从URL读取数据。但是,如果CSV文件包含这些字符,有没有读取数据的解决方案呢? 假设我有一个带有这些奇怪符号的文件,并且我想以前面提到的正确编码将其读入R中(使用UTF-8)。我认为这不会起作用: file = read.csv("strangedata.csv", header=F, stringsAsFactors = F,encoding = "UTF-8") - Aleksandr
为什么不先尝试使用 write.tableread.table,而非做出假设呢?;-) 帮助文件 ?read.csv 中有一个关于编码的部分。 - lukeA
1
我尝试了这些建议,但未能获得结果。代码如下:#utf.csv样本数据链接:https://www.dropbox.com/s/l77javsoy1272v8/utf.csv?dl=1#从.csv读取奇怪的字符 read <- read.csv("utf.csv", encoding = "UTF-8", header = TRUE, stringsAsFactors = FALSE)#使用UTF-8写入.csv con <- file("write.csv", open="w", encoding="UTF-8") write.table(read, con, sep=",", row.names=FALSE) close(con)仍然有一些字符在write.csv中是奇怪的。 - Aleksandr
您应该发布一个新问题,使用您的样本数据作为参考。编码错误就像打开潘多拉魔盒一样... - lukeA

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接