无法编写一些Unicode字符归档

时间:2018-12-21 15:30:52

标签: r windows unicode encoding utf-8

让我们考虑以下代码:

> cat('\u2077\u2078\u2079 \u2087\u2088\u2089')
⁷⁸⁹ ₇₈₉
> out <- file("out.txt", "w", encoding = 'utf-8')
> cat('\u2077\u2078\u2079 \u2087\u2088\u2089', file=out)
> close(out)

out.txt的内容是:

78<U+2079> 789

子/上标格式丢失,并且指数9是打印的代码点。

这是怎么回事?在RStudio控制台中打印字符时,如何在文件中使用正确的字符形式?

版本:RStudio 1.1.436 / R 3.5.2 / Windows 10

1 个答案:

答案 0 :(得分:1)

Aargh,Windows和UTF-8!

我也一直感到困惑,这对我有用

options(encoding='native.enc')
out <- file('out.txt', open='w', encoding = 'UTF-8')
writeLines('\u2077\u2078\u2079 \u2087\u2088\u2089', 'out.txt', useBytes = TRUE)
close(out)
readback <- readLines('out.txt', encoding='UTF-8')

我的设置有些旧(我最常用的设置是OSX):Rstudio 0.99.903 / R 3.3.1 / Windows 7

我遇到的最奇怪的事情是,如果您设置options(encoding='UTF-8')

,它会停止工作

最后,我注意到所有提到的UTF-8都是大写的,我看到您使用的是小写字母,我不确定这是否有所不同。