, вы получите то, что вам нужно -

ЛЕНИЕ (апрель 2018):
Проблема все еще сохраняется, при других настройках и компьютерах. Я считаю, что это связано со всеми символами UNICODE, UTF-8.

https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/

ПРОБЛЕМА:

Мой файл 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)) не помогло.

Способ 2

Если я изменю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, когда вы получаете сообщение об ошибке «запрос на установку локали… не может быть выполнено»

Ответы на вопрос(1)

Ваш ответ на вопрос