【问题标题】:Problem in printing Russian characters in rendering .docx in Rmarkdown在 Rmarkdown 中渲染 .docx 时打印俄语字符的问题
【发布时间】:2021-11-20 14:25:50
【问题描述】:

我正在尝试使用 Rmarkdown 呈现一个 .docx 文件,该文件在数据框中包含俄语字符

---
params: 
title: "Encoding Issue"
output:
 bookdown::word_document2:
   reference_docx: Word_template.docx
classoption: a4paper
always_allow_html: yes
lang: ru
---

```{r data}
df <- data.frame(x = 
c("Не хватка медикаментов",
"Далеко ехать",
"Опасность на дорогах к мед.учереждению",
"Only one family physician")
)
Encoding(df$x) <- "UTF-8"
```

```{r cat}
cat(df$x)
```

�� ������ ������������ ������ ����� ��������� �� ����� �� ���.������������只有一位家庭医生

```{r print}
print(df$x)
```

[1] "\xcd\xe5\xf5\xe2\xe0\xf2\xea\xe0\xec\xe5\xe4\xe8\xea\xe0\xec\xe5\xed\xf2\xee\xe2"
[2] "\xc4\xe0\xeb\xe5\xea\xee\xe5\xf5\xe0\xf2\xfc"
[3] "\xce\xef\xe0\xf1\xed\xee\xf1\xf2\xfc\xed\xe0\xe4\xee\xf0\xee\xe3\xe0\xf5\xea\xec\xe5\xe4.\ xf3\xf7\xe5\xf0\xe5\xe6\xe4\xe5\xed\xe8\xfe" [4] “只有一位家庭医生”

渲染的 .docx 文件将打印结果显示为

[1] " "
[2]“"
[3]“ . " [4] “只有一位家庭医生”

Sys.getlocale()

“LC_COLLATE=Russian_Russia.1251;LC_CTYPE=Russian_Russia.1251;LC_MONETARY=Russian_Russia.1251;LC_NUMERIC=C;LC_TIME=Russian_Russia.1251”

编码问题的根源可能在哪里?有什么方法可以正确渲染 .docx 文件并使用正确的字符?

Не хватка медикаментов Далеко ехать Опасность на дорогах к мед.учереждению 只有一位家庭医生

我也试过Sys.setlocale("LC_CTYPE", "English")。 .docx 模板设置为“UTF-8”。 rmarkdown 也设置为options(encoding = "UTF-8")

【问题讨论】:

  • 如果您使用cat 而不是print,它是否正确呈现?顺便说一句,我记得遇到过仅在 Windows 上发生的类似问题。

标签: r encoding r-markdown rendering .doc


【解决方案1】:

在这种情况下你应该使用enc2utf8

```{r data}
df <- data.frame(x = 
c("Нехватка медикаментов",
"Далеко ехать",
"Опасность на дорогах к мед.учреждению",
"Only one family physician")
)
```

```{r}
enc2utf8(df$x)
```

【讨论】:

    猜你喜欢
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-27
    • 1970-01-01
    • 2013-12-08
    • 1970-01-01
    • 2017-07-02
    相关资源
    最近更新 更多