R中的西里尔语编码输出

时间:2013-02-04 16:58:06

标签: r encoding output

编码对我来说总是很痛苦,再次用俄语文本写文件是不可能的。 我该怎么办?

 >test = c("привет","пока")
 >test
 [1] "\320\277\321\200\320\270\320\262\320\265\321\202" "\320\277\320\276\320\272\320\260"

 >Encoding(test)
 [1] "unknown" "unknown"

 > f = file("test.txt", encoding = "UTF-8")

 > write(t,f)
 Error in cat(list(...), file, sep, fill, labels, append) : 
 argument 1 (type 'closure') cannot be handled by 'cat'

 > Encoding(test) = "UTF-8"
 > test
 [1] "<U+043F><U+0440><U+0438><U+0432><U+0435><U+0442>" "<U+043F><U+043E><U+043A><U+0430>"  

 > write(t,f)
 Error in cat(list(...), file, sep, fill, labels, append) : 
 argument 1 (type 'closure') cannot be handled by 'cat'  

我使用R-studio 0.97.312,Mac OS 10.7.5,

2 个答案:

答案 0 :(得分:1)

如果你只是访问Encoding()的帮助页面,你会发现原生函数enc2native(x),这就像在

中那样做
test = enc2utf8(c("привет","пока"))

答案 1 :(得分:1)

我知道你编码麻烦的痛苦:( 希望这会对你有所帮助:

    > Sys.setlocale(,"ru_RU")
    [1] "ru_RU/ru_RU/ru_RU/C/ru_RU/C"
    > test = c("привет","пока")
    > write(test, file="test.txt")

您甚至可以在Sys.setlocale(,"ru_RU")之后使用西里尔变量:

   > привет <- rnorm(100)
   > min(привет)
   [1] -2.54578

Такчтоудачи! :)