Скрипт с текстом utf-8 работает не так, как RStudio и командная строка в Windows - PullRequest
0 голосов
/ 08 июня 2018

Я работаю с файлами, содержащими текст на хинди, и анализирую их.Я написал свой код в Rstudio и выполнил его без особых проблем.Но теперь мне нужно выполнить тот же сценарий из командной строки, используя R.exe / Rscript.exe, и он не работает так же.Я запустил простой скрипт из RStudio и терминала:

n_p<-'नाम'

Encoding(n_p)

gregexpr(n_p,c('adfdafc','नाम adsfdfa'))
sessionInfo()

Вывод в RStudio:

> n_p<-'नाम'
> 
> Encoding(n_p)
[1] "UTF-8"
> 
> gregexpr(n_p,c('adfdafc','नाम adsfdfa'))
[[1]]
[1] -1
attr(,"match.length")
[1] -1

[[2]]
[1] 1
attr(,"match.length")
[1] 3

> sessionInfo()
R version 3.5.0 (2018-04-23)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7600)

Matrix products: default

locale:
[1] LC_COLLATE=English_India.1252  LC_CTYPE=English_India.1252   
[3] LC_MONETARY=English_India.1252 LC_NUMERIC=C                  
[5] LC_TIME=English_India.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] rJava_0.9-10

loaded via a namespace (and not attached):
[1] compiler_3.5.0 tools_3.5.0   

Вывод с R.exe в cmd (Для целей отладки. Rscript.exe выдает похожий, если не идентичный вывод)

> n_p<-'à☼"à☼_à☼r'
>
> Encoding(n_p)
[1] "latin1"
>
> gregexpr(n_p,c('adfdafc','à☼"à☼_à☼r adsfdfa'))
[[1]]
[1] -1
attr(,"match.length")
[1] -1

[[2]]
[1] 1
attr(,"match.length")
[1] 9

> sessionInfo()
R version 3.5.0 (2018-04-23)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7600)

Matrix products: default

locale:
[1] LC_COLLATE=English_India.1252  LC_CTYPE=English_India.1252
[3] LC_MONETARY=English_India.1252 LC_NUMERIC=C
[5] LC_TIME=English_India.1252

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

loaded via a namespace (and not attached):
[1] compiler_3.5.0

Я пытался изменить локали, но Sys.setlocale отказывается работать должным образом.В некоторых случаях gregexpr выдает ошибку, когда не может проанализировать код не ASCII.И, наконец, когда он работает без ошибок, он не соответствует регулярным выражениям должным образом.Сейчас я не могу привести воспроизводимый пример, но постараюсь позже.

Справка.

1 Ответ

0 голосов
/ 08 июня 2018

Вы должны убедиться, что R работает в подходящей локали:

Запуск rterm использует: Sys.getlocale() для поиска вашей текущей локали.

Вы можете установить свою локаль, используя:

Sys.setlocale(category = "LC_ALL", locale = "hi-IN")

# Try "hi-IN.UTF-8" too...

Здесь вы можете найти имена локалей здесь , MSDN и здесь .

Если у вас правильное значениевставьте команду Sys.setlocale() в ваш ~/.Rprofile.

Ссылки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...