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

Posted

技术标签:

【中文标题】在 OS X Lion 中,LANG 未设置为 UTF-8,如何解决?【英文标题】:In OS X Lion, LANG is not set to UTF-8, how to fix it? 【发布时间】:2011-11-02 04:00:59 【问题描述】:

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

这是设置的:

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 设置为 open,尽管这样不起作用。

【问题讨论】:

这很奇怪。假设您使用的是默认 shell (bash) 和默认终端设置配置文件 (Basic),它应该默认在终端中工作。请注意,如果您更改编码或更改“设置语言环境变量”,它们只会在新终端中生效,而不是已经打开的终端。 我使用 zsh(使用我的 zsh!安装程序),也许是这样? 可能。尝试在没有任何自定义配置的情况下运行 zsh 以查看问题是否消失。使用 Shell > New Command 运行 zsh --no-rcszsh --no-rcs --no-global-rcs 以缩小问题范围。另外,尝试通过 New Command 在没有 shell 的情况下运行 locale 命令并查看它报告的内容。 @ChrisPage 我的输出与 OP 完全相同,在终端中启用了这些设置。我必须关闭set locale environment variables,重新启动终端,然后重新打开才能显示正确的环境。 在Ask Different上有这个问题的彻底答案。 【参考方案1】:

从 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"  

【讨论】:

另外,我最初在使用 iTerm2 时注意到了这个问题。这种解决方法似乎适用于 iTerm2 和终端。 花了一个小时寻找这个问题的解决方案非常感谢发布这个人。我可以确认它适用于终端和 iTerm2。 我的主文件夹中有一个.bash_profile,当.bash_profile 存在时,.profile 没有被获取。我需要在.bash_profile 中手动获取.profile 太棒了,它做到了,只是一个说明,一旦你使用 zsh,不要像我一样愚蠢......那里的配置是~/.zshrc......现在就像一个魅力 没有理由同时设置LANGLC_ALL。只应设置LANG。首先,它们都做同样的事情——为所有语言环境变量设置默认值(例如LC_TIMELANGUAGE)——LC_ALL 优先于LANGLANG 是用于标准配置的,而LC_ALL 仅用于调试目的(因为它会覆盖其他所有内容)。 Some reference【参考方案2】:

我最近在带有 bash shell 的 OS X Sierra 上遇到了同样的问题,感谢上面的答案,我只需要编辑文件

~/.bash_profile 

并附加这些行

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

【讨论】:

真的很有帮助。我没有bash_profile,我手动创建了它。如果不将export 设置为bash_profile,每次我们重置终端时,语言都会回滚。【参考方案3】:

这是很长一段时间的破坏性行为。我现在看到它是OSX .. 我在系统范围内对其进行了更改,并且效果很好

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

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

【讨论】:

【参考方案4】:

如果您安装了 zsh,您还可以使用

更新 ~/.zprofile
if [[ -z "$LC_ALL" ]]; then
  export LC_ALL='en_US.UTF-8'
fi

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

❯ 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"

【讨论】:

【参考方案5】:

我在使用 MacOS High Sierria 时遇到了这个问题。

您可以使用以下命令将 locale 以及 language 设置为 UTF-8 格式

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

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

Locale

【讨论】:

这个答案与接受的答案相比有何不同? 第一张照片的目的是什么?是不是和上一个一样?【参考方案6】:
if [[ -z "$LC_ALL" ]]; then
  export LC_ALL='en_US.UTF-8'
fi

然后检查语言环境,输出应该是:

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"

【讨论】:

以上是关于在 OS X Lion 中,LANG 未设置为 UTF-8,如何解决?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Mac OS X Lion 滚动手势的方向反过来了

制作 Mac OS X El Capitan 的U盘引导安装

在 Mac OS X Lion 上设置环境变量

Mac OS X Mountain Lion 下如何独立设置鼠标和触摸板的滚动方向?

使用 AMPPS 在 mac (Mac OS X Lion 10.70.4) 上设置虚拟主机

在 Mac OS X Lion 上设置 MySQLdb 以支持 Django 时遇到问题