YAML

时间:2018-05-14 11:25:23

标签: r r-markdown

我想在RStudio中使用参数化报告。但是当我使用带有变音符号(如å,äö)的瑞典字符的params时,编码会出现问题。我在我的计算机上运行Windows 10。

示例:

title: "test_yaml_encoding"
output: html_document
params:
  swe_chars_param: "åäöÅÄÖ"


```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
print(params$swe_chars_param)
```

[1]“åöÃ......Ôà - “

这似乎是一个众所周知的问题: https://github.com/rstudio/rmarkdown/issues/420 但我没有找到解决办法。

一种解决方案是使用函数修复编码。我尝试了两种不同的解决方案。

首先尝试:

ffix_swedish_chars <- function(txt) {
  txt <- gsub("Ã¥", "å", txt)
  txt <- gsub("ä", "ä", txt)
  txt <- gsub("ö", "ö", txt)
  txt <- gsub("Ã…", "Å", txt)
  txt <- gsub("Ä", "Ä", txt)
  txt <- gsub("Ö", "Ö", txt)
}

print(ffix_swedish_chars(params$swe_chars_param))

结果:

[1]“åäöÃ...Ôà - “

它有效,但仅适用于小写字母。

然后我尝试使用蛮力并尝试将所有可能的编码循环到UTF-8

library(utf8)
library(purrr)
library(readr)


koder <- iconvlist()


ftest_kodning <- function(str, kod) {
  iconv(str, from = kod, to = "UTF-8")
}

ftest_kodning_safe <- possibly(ftest_kodning, NA)

for (i in 1:length(koder)) {
  print(paste(koder[i], ftest_kodning_safe(params$swe_chars_param, koder[i])))
}

我找不到任何有效的编码组合。

现在我被卡住了。有没有人有解决方案?

编辑:

我不知道这是否有任何帮助,但这是字符的原始代码:

  

打印(charToRaw(PARAMS $ swe_chars_param))    [1] c3 83 c2 a5 c3 83 c2 a4 c3 83 c2 b6 c3 83 e2 80 a6 c3 83 e2 80 9e c3 83 e2 80 93

0 个答案:

没有答案