博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RStudio: Warning message: Setting LC_CTYPE failed, using "C" 浅析
阅读量:7048 次
发布时间:2019-06-28

本文共 1598 字,大约阅读时间需要 5 分钟。

版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。 https://blog.csdn.net/wireless_com/article/details/51113668

周末,一曾经的小伙伴问及数据分析的几个问题,遗憾的是,他没有基于python,而是选择了R。 他告诉我,R在他的mac 上无法显示和输入中文,不明所以。

问题出现了,首先要定位问题所在,还原现场。微信截图,才发现 Rstudio 在启动的时候报如下信息:

During startup - Warning messages:

1: Setting LC_CTYPE failed, using "C"
2: Setting LC_COLLATE failed, using "C"
3: Setting LC_TIME failed, using "C"
4: Setting LC_MESSAGES failed, using "C"
5: Setting LC_PAPER failed, using "C"
[R.app GUI 1.50 (6126) x86_64-apple-darwin9.8.0]

WARNING: You're using a non-UTF8 locale, therefore only ASCII characters will work. 

从告警信息中可以很清晰的知道问题所在,Locale 不是UTF8,所以中文不正常了。

明确了问题,如何解决呢?这里涉及一个概念 Locale,locale 是什么呢?

Mac OS 是一个类Linux系统,在Linux中,locale来设置程序运行的不同语言环境,locale由 ANSI C提供支持。locale的命名规则为_.,如zh_CN.GBK,zh代表中文, CN代表大陆地区,GBK表示字符集。在locale环境中,用一组变量代表国际化环境中的不同设置:

LC_COLLATE,定义该环境的排序和比较规则

LC_CTYPE,用于字符分类和字符串处理,控制所有字符的处理方式,包括字符编码,字符是单字节还是多字节,如何打印等。是最重要的一个环境变量。 

LC_MONETARY,货币格式

LC_NUMERIC,非货币的数字显示格式

LC_TIME,时间和日期格式

LC_MESSAGES,提示信息的语言。

另外还有一个LANGUAGE参数,它与LC_MESSAGES相似,但如果该参数一旦设置,则LC_MESSAGES参数就会失效。 LANGUAGE参数可同时设置多种语言信息,如LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"。

LANG,LC_*的默认值,是最低级别的设置,如果LC_*没有设置,则使用该值。类似于 LC_ALL

LC_ALL,它是一个宏,如果该值设置了,则该值会覆盖所有LC_*的设置值,但LANG的值不受该宏影响

了解了根源,就有解决 的方法了:

1) 修改系统的locale

2)修改R 执行环境的语言设置

对于方法1, export 和source 的命令就和在Linux 的环境设置一样了。

对于方法2, 就Mac OS 而言,涉及到 defaults  的使用。dafaults 是什么? 详情可以查看apple的相关文档。 简单的说,相当于windows 的注册表。

一条指令解决问题: 

defaults write org.R-project.R force.LANG en_US.UTF-8

这是改系统变量,那么在R 内部是否可以做相关的操作呢? 当然可以:

R> Sys.setenv(LANG="en_US.UTF-8")

出现问题是好事,从问题中挖掘到根本性的知识更重要,最重要的是掌握解决问题的思路和方法。

你可能感兴趣的文章
我的友情链接
查看>>
一张图看清楚成功人士与失败人士的差别,成功人士的10个标志
查看>>
SimpleGame分析
查看>>
Cocos-2d CCLayer的触摸响应CCTouchDelegate和CCStandardTouchDelegate 和 CCTargetedTouchDelegate
查看>>
C#系列视频教程-字符和字符串操作
查看>>
asp.net中使用窗体身份验证
查看>>
别以为真懂Openstack: 虚拟机创建的50个步骤和100个知识点(5)
查看>>
ORA-01172、ORA-01151错误处理
查看>>
pl/sql 找到数组中公有的字符
查看>>
Spring MVC +MyBatis +MySQL 登录查询Demo 解决了mybatis异常【转】
查看>>
Junk Dimension
查看>>
win7下安装mysql-connector遇到的问题
查看>>
OSPF复习1
查看>>
恢复oracle数据库误更新
查看>>
ucenter整合心的
查看>>
回归测试
查看>>
eclipse+maven远程(自动)部署web项目到tomcat
查看>>
logrotate 介绍及使用
查看>>
chromium buildbot tree
查看>>
js禁止用户打开浏览器控制台或右键菜单查看源码
查看>>