尽管使用 UTF-8,但在块内编码会导致字符丢失
Encoding within chunks results in missing characters despite UTF-8
我有一个用 UTF-8 编码的 Rmd 文件,但是当我编织文件时,R 评估内联和块内容缺少一些捷克字符。当我在块外键入文本时,一切都很好。从文件中读取相同的文本,我可以正确地生成内联输出,但在块内使用打印(print
或 cat
)时却不行。我对这种情况完全感到困惑,尤其是 cat
行为。
我在 Windows。在控制台中检查编码 returns UTF-8。语言环境设置为 English_United Kingdom.1252.
---
title: "test"
output: html_document
---
```{r}
txt <- "Čeština funguje"
print(Encoding(txt))
print(txt) # prints incorrectly
```
Čeština funguje # prints correctly
`r txt` # prints incorrectly
```{r}
cat(txt) # prints incorrectly
```
```{r, results='asis'}
line <- readLines("line", encoding = "UTF-8")
print(Encoding(line))
print(line) # prints incorrectly
cat(line) # prints incorrectly
```
`r line` # prints correctly!
P.S。我知道 Windows 上有很多关于 R 和编码的说法,但尽管我进行了广泛的搜索,但我找不到解决方案,也不完全理解这种行为。我猜我需要设置一些语言环境,但到目前为止我的努力是徒劳的。
在 R supports UTF-8 natively on Windows 之前,如果您想使用该语言的多字节字符,通常您必须将区域设置设置为特定语言,例如,如果您需要使用捷克语区域设置而不是英语想要正确 print()
/cat()
捷克语字符。需要在编织发生之前设置语言环境,例如,您可以在 ~/.Rprofile
:
中设置它
Sys.setlocale(, 'Czech')
我以前从未使用过捷克语,我不确定 'Czech'
是否是一个合适的值,但这就是我的想法(我以前在其他语言上取得过成功)。
我有一个用 UTF-8 编码的 Rmd 文件,但是当我编织文件时,R 评估内联和块内容缺少一些捷克字符。当我在块外键入文本时,一切都很好。从文件中读取相同的文本,我可以正确地生成内联输出,但在块内使用打印(print
或 cat
)时却不行。我对这种情况完全感到困惑,尤其是 cat
行为。
我在 Windows。在控制台中检查编码 returns UTF-8。语言环境设置为 English_United Kingdom.1252.
---
title: "test"
output: html_document
---
```{r}
txt <- "Čeština funguje"
print(Encoding(txt))
print(txt) # prints incorrectly
```
Čeština funguje # prints correctly
`r txt` # prints incorrectly
```{r}
cat(txt) # prints incorrectly
```
```{r, results='asis'}
line <- readLines("line", encoding = "UTF-8")
print(Encoding(line))
print(line) # prints incorrectly
cat(line) # prints incorrectly
```
`r line` # prints correctly!
P.S。我知道 Windows 上有很多关于 R 和编码的说法,但尽管我进行了广泛的搜索,但我找不到解决方案,也不完全理解这种行为。我猜我需要设置一些语言环境,但到目前为止我的努力是徒劳的。
在 R supports UTF-8 natively on Windows 之前,如果您想使用该语言的多字节字符,通常您必须将区域设置设置为特定语言,例如,如果您需要使用捷克语区域设置而不是英语想要正确 print()
/cat()
捷克语字符。需要在编织发生之前设置语言环境,例如,您可以在 ~/.Rprofile
:
Sys.setlocale(, 'Czech')
我以前从未使用过捷克语,我不确定 'Czech'
是否是一个合适的值,但这就是我的想法(我以前在其他语言上取得过成功)。