我想在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