如何获取特定字符的Latin-1编码以解决R脚本字符乱码问题
如何获取特定字符的Latin-1编码以解决R脚本字符乱码问题
我太懂这种烦恼了——好不容易写好带特殊拉丁字符的R脚本,关闭再打开后字符全变成问号或乱码,之前靠转成Latin-1编码解决过,但偏偏忘了怎么获取那些转义码对吧?别着急,我给你整理几个实用的方法:
用
charToRaw()直接获取编码:这是最直接的方式,比如要获取“â”的Latin-1编码,在R控制台里运行:charToRaw("â")输出会是
0xe2,这就是你需要的转义码,所以可以把“câmbio”写成"c\xe2mbio"。用
sprintf()直接生成转义字符串:如果想一步得到\xe2这种格式的字符串,可以结合utf8ToLatin1()和sprintf():sprintf("\\x%02x", utf8ToLatin1("â"))运行后直接输出
"\xe2",复制粘贴就能用在你的字符串里。验证转义码是否正确:要是不确定转义码对应的字符对不对,可以用
rawToChar()反向验证:rawToChar(as.raw(0xe2), encoding = "latin1")输出应该是“â”,确认没问题再用。
另外,其实还有个更一劳永逸的办法:直接让你的R文件和R会话都用UTF-8编码,这样根本不用手动转义字符。比如:
- 在脚本开头加上
options(encoding = "UTF-8") - 保存R文件时选择UTF-8编码(RStudio里可以在“File -> Save with Encoding...”里选UTF-8)
这样下次打开文件时,特殊字符就不会变成问号啦!
备注:内容来源于stack exchange,提问作者Pedro Cardoso
相关产品推荐
相关产品推荐

