, вы получите то, что вам нужно -
ЛЕНИЕ (апрель 2018):
Проблема все еще сохраняется, при других настройках и компьютерах. Я считаю, что это связано со всеми символами UNICODE, UTF-8.
ПРОБЛЕМА:
Мой файл Rmd / R сохраняется в кодировке UTF-8. ДругиеsessionInfo()
подробности:
Platform: x86_64-w64-mingw32/x64 (64-bit)
LC_CTYPE=English_Canada.1252
other attached packages:
[1] knitr_1.17
Вот простой фрейм данных, который мне нужно распечатать в виде таблицы в HTML-документе, например, с участиемkable(dt)
или любым другим способом.
dt <- data.frame(
name=c("Борис Немцов","Martin Luter King"),
year=c("2015","1968")
)
Ни одна из следующих работ:
Способ 1Если я оставлю Sys.setlocale () как есть (т.е."English_Canada.1252"
), тогда я получаю это:
> dt;
name year
1 <U+0411><U+043E><U+0440><U+0438><U+0441> <U+041D><U+0435><U+043C><U+0446><U+043E><U+0432> 2015
2 Martin Luter King 1968
> kable(dt)
|name |year |
|:-----------------------------------------------------------------------------------------|:----|
|<U+0411><U+043E><U+0440><U+0438><U+0441> <U+041D><U+0435><U+043C><U+0446><U+043E><U+0432> |2015 |
|Martin Luter King |1968 |
Обратите внимание, что<U+....>
печатаются вместо символов.
С помощьюdt$name <- enc2utf8(as.character(dt$name))
не помогло.
Если я изменюSys.setlocale("LC_CTYPE", "russian")
# "Russian_Russia.1251" `, тогда я получаю это:
> dt;
name year
1 Áîðèñ Íåìöîâ 2015
2 Martin Luter King 1968
> kable(dt)
|name |year |
|:-----------------|:----|
|Áîðèñ Íåìöîâ |2015 |
|Martin Luter King |1968 |
Обратите внимание, что персонажи стали бредом.
С помощьюprint(dt,encoding="windows-1251"); print(dt,encoding="UTF-8")
не имел никакого эффекта.
Любой совет?
Самые близкие, которые я мог найти для решения этой проблемы, находятся в следующих ссылках, но они не помогли:http://blog.rolffredheim.com/2013/01/r-and-foreign-characters.html, https://tomizonor.wordpress.com/2013/04/17/file-utf8-windows, https://www.smashingmagazine.com/2012/06/all-about-unicode-utf8-character-sets
Я также попытался сохранить свой файл с кодировкой 1251 (вместо текущей кодировки UTF-8) и некоторыми другими пакетами преобразования / обработки символов. Ничего не помогло.
ОБНОВИТЬ:
Открыт связанный вопрос:Как изменить Sys.setlocale, когда вы получаете сообщение об ошибке «запрос на установку локали… не может быть выполнено»