rPython方法python.get返回奇怪的编码

时间:2015-06-06 12:38:06

标签: r encoding rpython

我试图使用rPython包将一些参数传递给python代码并返回结果。但由于某些原因,我从我的python代码得到了奇怪的编码。也许某人有一些提示要指出我。

以下是我要测试的简单代码:

require(rPython)

#pass the test word 'audiention' (in ukrainian)
word<-"аудієнція"
python.assign("input", word)
python.exec("input = input.encode('utf-8')")   
python.exec("print input") #the output in console is correct at this step: аудієнція
x<-python.get("input")
cat(x) # the output is: 0C4VT=FVO

有没有人有一些建议为什么python.get的输出编码很奇怪?

我的Sys.getlocale()输出是:

Sys.getlocale()
[1] "LC_CTYPE=en_US.UTF-8;LC_NUMERIC=C;LC_TIME=uk_UA.UTF-8;LC_COLLATE=en_US.UTF-8;LC_MONETARY=uk_UA.UTF-8;LC_MESSAGES=en_US.UTF-8;LC_PAPER=uk_UA.UTF-8;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=uk_UA.UTF-8;LC_IDENTIFICATION=C"

提前感谢您的任何提示!

1 个答案:

答案 0 :(得分:0)

我最近基于名为SnakeCharmR的原始rPython代码构建了一个新包,它解决了rPython的这个问题和其他问题。

快速比较:

> library(SnakeCharmR)
> py.assign("a", "'")
> py.get("a")
[1] "'"
> py.assign("a", "áéíóú")
> py.get("a")
[1] "áéíóú"

> library(rPython)
> python.assign("a", "'")
  File "<string>", line 2
    a =' [ "'" ] '
                 ^
SyntaxError: EOL while scanning string literal
> python.assign("a", "áéíóú")
> python.get("a")
[1] "\xe1\xe9\xed\xf3\xfa"

您可以像这样安装SnakeCharmR:

> library(devtools)
> install_github("asieira/SnakeCharmR")

希望这有帮助。