在OS X Lion中,LANG未设置为UTF-8,如何解决?


148

我尝试在OS X Lion中设置postgress,发现没有正确设置LOCALE环境var。

设置如下:

LANG=
LC_COLLATE="C"
LC_CTYPE="C"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=

我希望UTF-8有所帮助。这是一个干净的OS X Lion设置,带有西班牙语。我什么也没动。

我不知道如何将其设置为UTF-8。

在终端设置中,检查UTF-8并将LOCALE设置为打开,尽管这样做不起作用。


2
真奇怪 假设您使用的是默认外壳程序(bash)和默认的终端设置配置文件(Basic),则默认情况下它应在终端中运行。请注意,如果您更改编码或更改“设置区域设置环境变量”,则它们仅在新终端中生效,而不在已经打开的终端中生效。
克里斯·佩奇

我使用zsh(使用我的zsh!安装程序哦),也许是这样吗?
mamcx 2011年

可能吧 尝试在没有任何自定义配置的情况下运行zsh,以查看问题是否消失。使用Shell> New Command运行zsh --no-rcszsh --no-rcs --no-global-rcs缩小问题范围。另外,请尝试locale通过“ 新建命令”在没有外壳的情况下仅运行命令,然后查看其报告。
克里斯·佩奇

@ChrisPage我具有与OP完全相同的输出,并且在终端中启用了这些设置。我必须set locale environment variables关闭电源,重新启动终端,然后再将其重新打开,以显示正确的环境。
克里斯

这个问题在Ask Different上有一个详尽的答案。
starfry

Answers:


311

从OSX Lion计算机登录运行Red Hat的服务器时,我注意到了完全相同的问题。

尝试添加或编辑该~/.profile文件以在启动新会话时正确导出您的区域设置。

export LC_ALL=en_US.UTF-8  
export LANG=en_US.UTF-8

添加到文件中的这两行应足以设置语言环境[替换en_US为所需的语言环境,并事先检查它是否确实已安装在系统上(locale -a)]。

之后,您可以开始新的会话并使用进行检查locale

$ locale

以下应该是输出:

LANG="en_US.UTF-8"  
LC_COLLATE="en_US.UTF-8"  
LC_CTYPE="en_US.UTF-8"  
LC_MESSAGES="en_US.UTF-8"  
LC_MONETARY="en_US.UTF-8"  
LC_NUMERIC="en_US.UTF-8"  
LC_TIME="en_US.UTF-8"  
LC_ALL="en_US.UTF-8"  

2
另外,我最初在使用iTerm2时注意到该问题。此解决方法似乎对iTerm2和Terminal均适用。
wormintrude 2011年

1
花了一个小时寻找此问题的解决方案,非常感谢您发布此人。我可以确认它在Terminal和iTerm2上都可以使用。
马里亚诺·卡瓦洛

7
链接无效。
文森特坐在

11
.bash_profile我的主文件夹上有一个,出现.profile时没有被.bash_profile提供。我需要手动输入.profile内部消息.bash_profile
BrunoJCM 2015年

3
了不起,做到了,只是一个便笺,一旦您使用zsh,就不要傻了我...那里的配置~/.zshrc...现在就像一个魅力一样工作
Redrick

20

最近我在带有bash shell的OS X Sierra上遇到了相同的问题,由于上面的回答,我只需要编辑文件

~/.bash_profile 

并附加这些行

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

1
真的有帮助。我没有bash_profile,我已经手动创建了。而且,如果不export输入bash_profile,则每次重置终端时,语言都会回滚。
潘·范林

7

很长一段时间以来,这是一件令人头疼的事。我现在看到的是OSX。我在全系统范围内对其进行了更改,并且效果很好

当我在Centos6和Fedora中添加LANG时,我也是我的首选LANG。您还可以在终端设置(OSX)/ etc / profile中“取消选中”导出或设置区域设置

导出LC_ALL = en_US.UTF-8
导出LANG = en_US.UTF-8


5

如果您安装了zsh,也可以~/.zprofile使用

if [[ -z "$LC_ALL" ]]; then
  export LC_ALL='en_US.UTF-8'
fi

并使用localecmd 检查输出,如上所示

❯ locale                                                                                                                                           
LANG="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL="en_US.UTF-8"

0

我在MacOS High Sierria上遇到了这个问题。

屏幕截图1

您可以设置语言环境以及语言UTF-8格式使用下面的命令:

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

屏幕截图2

现在,为了检查语言环境是否已更新,请使用以下命令:

Locale

屏幕截图3


1
与公认的答案相比,这个答案有何不同?
Denis V

2
第一张图片的目的是什么?与上一个不一样吗?
narengi '19
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.