【问题标题】:R encoding UTF-8: U+0080-U+009FR编码UTF-8:U+0080-U+009F
【发布时间】:2015-06-02 12:17:32
【问题描述】:

我正在努力解决一些编码问题。我有许多包含以下格式的行的文本文件:

https://dl.dropboxusercontent.com/u/94114397/example.txt

根据 Notepad++,这些都以 UTF-8 编码,并且大多数非 ASCII 字符都能正确显示,正如您在第 1 行和第 2 行中看到的那样。但是,我遇到了一些似乎被错误解释的字符的问题( ?)。在我的示例文件中,第 3 行中的“Lakuic”一词就是这种情况,其中“u”和“i”之间应该有一个“š”。这两个字母之间实际上有一个字符,可以通过将单词复制粘贴到谷歌浏览器地址栏中来看到。

现在,当我在 R 中读取数据时,它显示“Lakuic”。我该如何解决这个问题?

【问题讨论】:

  • 尝试在读取中添加编码,例如。 read.table("saveFile", header=F, sep="\t", quote="\"",encoding="latin1")
  • 我已经尝试过使用不同的编码(“latin1”,“Windows1253”,...),总是导致整个文档中的特殊字符显示错误。
  • 我认为这是 Windows-1252。将 Lakuic 复制到一个空白的 R 文件中,另存为 UTF 编码。打开文件- 不正确。选择 File - ReOpen with Encoding 并选择 Windows-1252。对我来说是正确的。

标签: r utf-8 character-encoding


【解决方案1】:

尝试从 UTF-8 转换为 latin1:

    df <- read.table("http://dl.dropboxusercontent.com/u/94114397/example.txt", sep = "\t", row.names = 1, stringsAsFactors = FALSE, encoding="UTF-8")
    iconv(df[, 1], from = "UTF-8", to = "latin1")
    # [1] "Trichocentrum<->longifolium<-><->(Lindl.) R.Jiménez, Acta Bot. Mex. 97: 54 (2011)." 
    # [2] "Salvia<->× hegelmaieri<->nothosubsp. accidentalis<->(Sánchez-Gómez & R.Morales)."   
    # [3] "Edraianthus<->tarae<-><->Lakušic, Bilten Drustva Ekologa BiH, Ser. A 4: 108 (1987)."

我的sessioInfo()

# Platform: x86_64-w64-mingw32/x64 (64-bit)
# Running under: Windows 7 x64 (build 7601) Service Pack 1
# 
# locale:
#   [1] LC_COLLATE=German_Germany.1252  LC_CTYPE=German_Germany.1252    LC_MONETARY=German_Germany.1252 LC_NUMERIC=C                    LC_TIME=German_Germany.1252  

【讨论】:

  • 这实际上似乎有效。你能解释一下为什么读取为 latin1 不起作用,但从 UTF-8 重新转换为 latin1 可以吗?
  • 不,很遗憾不是 - 编码问题对我来说一直是个谜 => 反复试验。
【解决方案2】:

这对我有用:

file1   <- "https://dl.dropboxusercontent.com/u/94114397/example.txt"
result <- read.table(file1, header=F, sep="\t", quote="\"",encoding="windows-1252")

【讨论】:

  • 不,它在我的机器上不起作用。所有其他特殊字符都已损坏,例如:“R.Jiménez”->“R.Jiménez”甚至“Lakuic”->“Lakušic”
猜你喜欢
  • 1970-01-01
  • 2013-08-29
  • 2020-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多