r - 瑞典语字符的文本编码在 YAML 中出错
问题描述
我想在 RStudio 中使用参数化报告。但是,当我将参数与带有变音符号的瑞典字符(如 å、ä ö)一起使用时,编码会出现问题。我在我的电脑上运行 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])))
}
我找不到任何有效的编码组合。
现在我被困住了。有没有人有办法解决吗?
编辑:
我不知道这是否有任何帮助,但这是字符的原始代码:
print(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
解决方案
推荐阅读
- javascript - Laravel Dusk 在表单确认后删除输入值
- vb.net - 如何在 VB.NET 程序中启动 explorer.exe
- json - react 在请求表达服务器后显示原始 json 数据
- python - pd.cut 的结果令人困惑
- php - 使用 DI 注入类:无法打开流
- javascript - 拼接后VUEjs Array不会更新
- apache-spark-sql - Apache Spark SQL:如何使用 GroupBy 和 Max 过滤数据
- javascript - React.js 是否以不同的方式处理“静态”?复合成分
- google-apps-script - 列的动态边框
- mysql - 从两个大表的连接中选择不同的值