У меня проблемы с обработкой экранированных символов юникода в R, особенно тех, которые встречаются при захвате информации из MediaWiki API. Я нахожу строку JSON вида
{"query":{"categorymembers":[{"ns":0,"title":"Banach\u2013Tarski paradox"}]}}
Что должно быть вполне корректно, но при чтении через fromJSON()
я получаю:
snip...
[1] "Banach\023Tarski paradox"
Первоначально я думал, что это просто проблема с RJSONIO, но я столкнулся с аналогичными проблемами при использовании scan()
и readLines()
. Я предполагаю, что я упускаю что-то очень важное.
На самом деле я не могу привести полностью воспроизводимый пример, используя только R, потому что если я отправлю "em\u2013dash" в файл через write() (или какую-нибудь эквивалентную функцию), R автоматически преобразует тире. Итак, начнем. Создайте текстовый файл test1 со следующим именем:
"em\u2013dash" "em–dash" " em \u2013 dash"
Затем загрузите R (по любому пути к файлу):
> scan( file = "~/R/test1", what = "character", encoding = "UTF-8")
Read 3 items
[1] "em\\u2013dash" "em–dash" " em \\u2013 dash"
> readLines("~/R/test1", warn = FALSE, encoding = "UTF-8")
[1] "\"em\\u2013dash\" \"em–dash\" \" em \\u2013 dash\""
Добавленный символ экранирования - это то, что вызывает мои проблемы с fromJSON()
. Я мог бы просто убрать их, но я, вероятно, сломал бы что-нибудь еще в процессе, и я представляю, что есть более простое решение. Спасибо.
Вот информация о сессии:
R version 2.14.1 (2011-12-22)
Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)
locale:
[1] C/en_US.UTF-8/C/C/C/C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] RJSONIO_0.98-0
loaded via a namespace (and not attached):
[1] tools_2.14.1