我有这个字符串:"Časové rozlíšenie súčet"
我想将字符串存储到csv文件(或其他)中,以便稍后可以使用它来重写数据帧中的列名。
每次我都使用write.csv(...., encoding="UTF-8)
或任何其他方法:
"Casové rozlíšenie súcet" # so it loses the Č or č, all other letters are fine.
我使用x <- fromJSON
进行报废。只要我将废弃的字符串放入data.frame(x)
或c(x)
,我就会松开Č or č
,为什么会发生这种情况?
> sessionInfo()
R version 3.1.2 (2014-10-31)
Platform: x86_64-w64-mingw32/x64 (64-bit)
locale:
[1] LC_COLLATE=English_United Kingdom.1252 LC_CTYPE=English_United Kingdom.1252 LC_MONETARY=English_United Kingdom.1252
[4] LC_NUMERIC=C LC_TIME=English_United Kingdom.1252
编辑:
在我的Rstudio控制台中:
x <- c("Časové rozlíšenie súčet")
data.frame(x)
x
1 Casové rozlíšenie súcet
答案 0 :(得分:1)
您正在使用的编码 - Windows-1252 - 不包含带重音的“c”字母。
不幸的是,在Windows上对R的编码支持相当缺乏。如果Sys.setlocale
1 不起作用,则唯一的办法可能是raw
- 对字符串进行编码并从那里转换它:
# Časové …
x = list(as.raw(c(0xC4, 0x8C, 0x61, 0x73, 0x6F, 0x76, 0xC3, 0xA9))) # , …
result = iconv(x, from = 'UTF-8')
自you need to look up the UTF-8 encoding sequence for every character以来,这显然是颈部疼痛。更好的方法是从文件中读取数据 raw 并从那里转换它。
我不知道如何将其与fromJSON
结合使用。您可以尝试在encoding = 'UTF-8'
的调用中指定fromJSON
。但是,我怀疑它会起作用。
1 试试这些:
Sys.setlocale(locale = 'en_GB.UTF-8')
Sys.setlocale(locale = 'UTF-8')
Sys.setlocale(locale = 'CP65001')
不幸的是,我不知道Windows下R的语言环境支持状态,所以这可能不起作用。