R:cat()一致地将unicode打印到控制台,但不打印到文件

时间:2018-11-29 18:21:48

标签: r string unicode

背景

我有一个函数,将Tibble(或data.frame,不要紧)作为输入,并在文本文件中生成自定义Markdown表。数据来自RESTful API(如果您必须知道,则为AirTable);是UTF-8编码的;已经包含Unicode字符(例如¥和€);并通过httrjsonlitetibble包中的函数处理成Tibble。我已经通过基本的Encoding函数确认了Tibble列中的数据是UTF-8。

编辑:我正在Windows 10上运行R 3.5.1。

问题

当我使用cat将Tibble中的数据打印到文件中时,它可以正常工作。货币符号和文本中的任何其他疯狂内容都可以正常打印。 (尽管,奇怪的是,最终的文件编码似乎是ANSI。)

但是...在创建Markdown表时,我试图将FALSE时的逻辑列转换为空白字符串,而当TRUE时将其转换为☑字符。该符号不在数据中,因此我需要使用函数将其写入其中。但是,它总是从字面上打印为字符串<U+2611>

真正令人好奇的是,如果我告诉cat打印到控制台而不是文件到控制台,则无需进行任何其他更改即可。我很困惑。

我尝试过的事情

首先,我尝试使用intToUtf8函数,传入符号的小数表示形式(9745)。我尝试直接在cat语句中使用它,还尝试先将结果保存到变量中,然后将其传递到cat语句中。

然后,我尝试直接将字符复制粘贴到R文件中的字符串中。如上所述,我尝试通过变量直接或间接传递它。

最后,我读了这样的内容:Print unicode character string in R,并使用了转义的unicode序列来插入字符。再次,我尝试了两种方法-直接在cat语句中和间接作为变量-但结果是相同的。

(我没有按照以上答案的建议尝试使用stringi软件包,但是我没有遇到与个人所遇到的完全相同的问题,因此我不确定情况会不会更好。)

0 个答案:

没有答案