【发布时间】:2015-07-22 05:57:53
【问题描述】:
尝试在 R 中解析俄语字母表中的 JSON 文件时遇到问题。文件如下所示:
[{"text": "Валера!", "type": "status"}, {"text": "когда выйдет", "type": "status"}, {"text": "КАК ДЕЛА?!)", "type": "status"}]
并以 UTF-8 编码保存。我尝试了库 rjson、RJSONIO 和 jsonlite 来解析它,但它不起作用:
library(jsonlite)
allFiles <- fromJSON(txt="ru_json_example_short.txt")
给我错误
Error in feed_push_parser(buf) :
lexical error: invalid char in json text.
[{"text": "Валера!", "
(right here) ------^
当我将文件保存为 ANSI 编码时,它可以正常工作,但随后,俄语字母转换为问号,因此输出无法使用。 请问有人知道如何在R中解析这样的JSON文件吗?
编辑: 上面提到的适用于保存在 Windows 记事本中的 UTF-8 文件。当我将它保存在 PSPad 中并对其进行解析时,结果如下所示:
text type
1 <U+0412><U+0430><U+043B><U+0435><U+0440><U+0430>! status
2 <U+043A><U+043E><U+0433><U+0434><U+0430> <U+0432><U+044B><U+0439><U+0434><U+0435><U+0442> status
3 <U+041A><U+0410><U+041A> <U+0414><U+0415><U+041B><U+0410>?!) status
【问题讨论】:
-
你在windows上吗?您是否 100% 确定文件保存为 UTF-8?
-
是的,我在 Windows 上。我在记事本中将文件保存为 UTF-8。
-
在 R 中,我尝试了
x<-'[{"text": "Валера!", "type": "status"}, {"text": "когда выйдет", "type": "status"}, {"text": "КАК ДЕЛА?!)", "type": "status"}]'并验证了Encoding(x)=="UTF-8"。然后我用writeLines(x, "test.txt", useBytes=TRUE)写出来,然后用fromJSON(txt="test.txt")毫无问题地读出来。 -
是的,谢谢,这对我有用,但结果是在编辑后的问题中——而不是俄文字母,只有它们的代码,这也很漂亮,因为我想使用文本,看看那里写了什么......
-
如果你运行
x<-fromJSON(...),那么x$test是什么样子的,Encoding(x$text)返回什么?