在 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-rcs
和 zsh --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
......现在就像一个魅力
没有理由同时设置LANG
和LC_ALL
。只应设置LANG
。首先,它们都做同样的事情——为所有语言环境变量设置默认值(例如LC_TIME
、LANGUAGE
)——LC_ALL
优先于LANG
。 LANG
是用于标准配置的,而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 El Capitan 的U盘引导安装
Mac OS X Mountain Lion 下如何独立设置鼠标和触摸板的滚动方向?