R语言:如何以不同编码打印字符向量至Shell并显示特殊字符
解决SAS导入字符变量的特殊字符显示与编码打印问题
一、显示特殊字符的转义形式
你遇到的“空白”大概率是不间断空格(U+00A0)、回车(\r)或制表符(\t)这类不可见特殊字符,以下方法可以帮你把它们显示为转义形式(比如\r11-Mar-2021):
- 使用
stringi包的stri_escape_unicode()函数,直接将所有特殊字符转义为可读格式:# 先安装并加载stringi包 install.packages("stringi") library(stringi) val <- "\r11-Mar-2021" # 模拟你的变量 stri_escape_unicode(val) # 输出结果:[1] "\\r11-Mar-2021" - 用
charToRaw()查看字符的原始字节码,确认特殊字符类型:charToRaw(val) # 回车(\r)的字节码是0D,制表符(\t)是09,不间断空格是A0 - 基础R的
print()函数(R 4.0及以上版本)支持escape参数,直接显示转义字符:print(val, quote = TRUE, escape = "unicode")
二、以指定编码打印至Shell
要将字符向量以不同编码输出到Shell,可通过以下方法:
- 使用
cat()函数,通过encoding参数指定目标编码:# 以UTF-8编码打印(适配Linux/macOS终端) cat(val, sep = "\n", encoding = "UTF-8") # 以GBK编码打印(适配Windows cmd默认环境) cat(val, sep = "\n", encoding = "GBK") - 使用
writeLines()函数,同样支持编码指定:# 以ISO-8859-1编码打印 writeLines(val, encoding = "ISO-8859-1")
注意:Shell的默认编码需要与你指定的编码匹配,否则会出现乱码。比如Linux/macOS终端默认是UTF-8,Windows cmd默认是GBK(部分新版本可切换为UTF-8)。
内容的提问来源于stack exchange,提问作者AdamO
相关产品推荐
相关产品推荐

