【问题标题】:Cyrillic encoding output in RR中的西里尔编码输出
【发布时间】:2013-01-19 10:28:58
【问题描述】:

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

 >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,

【问题讨论】:

  • 如果你尝试Sys.setlocale("LC_ALL", "Ru_Ru")会发生什么?
  • +1 因为我对本地化字符感到痛苦。
  • 我刚刚将它复制并粘贴到我的笔记本电脑上,它似乎工作正常...这是受您操作系统的语言环境限制吗?
  • 请将Sys.getlocale()的输出提供给我们
  • 使用以下Sys.getlocale() 输出对我来说很好:"LC_COLLATE=Dutch_Netherlands.1252;LC_CTYPE=Dutch_Netherlands.1252;LC_MONETARY=Dutch_Netherlands.1252;LC_NUMERIC=C;LC_TIME=Dutch_Netherlands.1252" Encoding 的输出如预期的那样是UTF-8

标签: r encoding output


【解决方案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

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

【讨论】:

  • 您能否提供更多说明
【解决方案2】:

如果你只是访问 Encoding() 的帮助页面,你会发现原生函数 enc2native(x),这将起到如下作用

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-29
    • 1970-01-01
    • 2014-03-28
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多