好的,所以在经过15年的linux之后我终于得到了一台MacBook Air。在我得到它之前,我最关心的是UTF-8支持,因为无论我是从Windows还是mac-clients发送给我的文件,总是会出现编码问题,而在ubuntu上我可以确定所有输出无论什么程序都会产生完美的utf-8编码数据。
现在我的第二天(今天)与OS X一起沮丧地撕裂了我的头发。为什么呢?
当我打开Nano并输入一些像ÅÄÖ这样的瑞典字符时,它会在行尾添加空白字符(我猜这是每个字符中的另一个字节)
当我打开python并尝试使用瑞典语字符时,它根本不输出任何内容
当我通过SSH连接到Ubuntu服务器时,我无法在bash中键入åäö,但它很难在VIM中运行(仍然通过SSH)。并且在nano退格中不起作用,但是如果在终端首选项中选中“删除发送ctrl + H”框,则退格开始在nano中工作但在VIM中停止工作。
我尝试在终端首选项中取消选中所有其他编码然后UTF-8,但这似乎也不起作用。
我确信每个非美国人都必须有同样的问题,所以我应该修理它们吗?我只想要完整的UTF-8支持......:'(
答案 0 :(得分:37)
对我帮助了这个: 我在终端
的本地shell上检查了语言环境$ locale
LANG="cs_CZ.UTF-8"
LC_COLLATE="cs_CZ.UTF-8"
然后通过ssh和编辑后的文件/ etc / profile连接到我正在使用的任何远程主机 - 最后我添加了一行:
export LANG=cs_CZ.UTF-8
在下次连接后,它在bash,ls和nano中工作正常。
答案 1 :(得分:16)
不幸的是,“首选项”对话框并不总是非常有用,但通过调整,你应该能够使一切正常运行。
为了能够在终端中键入瑞典语字符,请将以下行添加到〜/ .inputrc中(很可能您必须创建此文件):
set input-meta on
set output-meta on
set convert-meta off
这应该与utf8和bash
,nano
以及许多其他程序中的其他编码一起完成。某些程序(如tmux
)也取决于locale
。然后,将export LC_ALL=en_US.UTF-8
添加到~/.profile
文件应该会有所帮助,但请记住,一些(主要是模糊的)程序需要标准的区域设置,因此如果您在运行或编译程序时遇到问题,请尝试回到LC_ALL=C
。
一些可能有用的参考资料:
答案 2 :(得分:14)
转到Terminal -> Preferences -> Advanced (Tab)
转到International
,然后选择Unicode (UTF-8)
作为Character Encoding
。
并勾选Set locale environment variables on startup
。
答案 3 :(得分:13)
以下是您在OS X Mavericks(10.9)下需要执行的操作的摘要。
总结了这一点http://hints.macworld.com/article.php?story=20060825071728278
转到终端 - >偏好设置 - >设置 - >高级。
在国际下,确保字符编码设置为 Unicode(UTF-8)。
此外,这是关键:在仿真下,确保未选中使用Control-V 转义非ASCII输入(即不> em> set)。
这两个设置解决了终端的问题。
确保您的区域设置设置为以.UTF-8
结尾的内容。输入locale
并查看LC_CTYPE
行。如果它没有说en_US.UTF-8
之类的内容(如果你使用非美国英语语言环境,那么点之前的内容可能会改变),那么在你的Bash .profile
或{{1}中在您的主目录中,添加如下所示的行:
.bashrc
这将解决一般命令行程序的问题。
将以下行添加到主目录中的export LC_CTYPE=en_US.UTF-8
(如有必要,请创建它):
.inputrc
这使得Bash成为8位干净,所以它会传入和传出UTF-8字符,而不会弄乱它们。
请注意,您必须重新启动Bash(例如关闭并重新打开终端窗口),以使其注意您在上面的2和3中所做的所有设置。
答案 4 :(得分:9)
简短的通用答案(适合其他国家语言,甚至立陶宛语或俄语)
nano .profile
export LC_ALL=en_US.UTF-8
这为我解决了即使是小国罕见的民族性格。您可能需要关闭并打开终端以使更改生效。
此外,如果您喜欢Linux行为(使用很多Alt快捷键,如Alt +。或Alt +,在mc中),那么您应该禁用Mac风格的Option键功能:
终端 - >首选项 - >配置文件 - >键盘和复选框:
Use Option as Meta key
答案 5 :(得分:5)
我的终端只是表现得很傻,而不是打印出来的åäö。我找到(并设置)此设置:
在Terminal -> Preferences... -> Profiles -> Advanced
下。
似乎解决了我的问题。
答案 6 :(得分:4)
要使nano
按照您的意愿工作,请尝试:
export LANG="UTF-8"
或者通过nano
获取MacPorts
的较新版本:
# cf. http://www.macports.org/install.php
port info nano
port variants nano
sudo port install nano +utf8 +color +no_wrap
关于ssh& UTF-8在SendEnv LANG LC_*
中发出 /etc/ssh_config
个评论。
请参阅:Terminal in OS X Lion: can't write åäö on remote machine
答案 7 :(得分:3)
使用nano --version
检查nano是否实际上是使用UTF-8支持构建的。这是Cygwin:
nano --version
GNU nano version 2.2.5 (compiled 21:04:20, Nov 3 2010)
(C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
2008, 2009 Free Software Foundation, Inc.
Email: nano@nano-editor.org Web: http://www.nano-editor.org/
Compiled options: --enable-color --enable-extra --enable-multibuffer
--enable-nanorc --enable-utf8
注意最后一点。
答案 8 :(得分:1)
由于nano是终端应用。我想这更像是一个终端问题,而不是纳米问题。
我在OS X遇到了类似的问题(我无法在终端输入和查看中文字符)。
我尝试通过OS X UI调整系统设置,其实际效果是更改环境变量LANG。
所以最后我只是在〜/ .bashrc中添加一些东西来解决问题。
# I'm Chinese and I prefer English manual
export LC_COLLATE="zh_CN.UTF-8"
export LC_CTYPE="zh_CN.UTF-8"
export LC_MESSAGES="en_US.UTF-8"
export LC_MONETARY="zh_CN.UTF-8"
export LC_NUMERIC="zh_CN.UTF-8"
export LC_TIME="zh_CN.UTF-8"
顺便说一句,不要设置LC_ALL,它将覆盖所有其他LC_ *设置。
答案 9 :(得分:0)
就我而言,只使用uxterm
命令代替xterm
解决了问题。它可以通过安装Apple提供的XQuartz软件包在/opt/X11/bin/uxterm
中使用。
答案 10 :(得分:0)
尝试
.zshrc
或.bashrc
中设置这些ENV变量: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"
答案 11 :(得分:0)
只需在远程服务器上添加一个文件
$ sudo nano /etc/environment
LANG=en_US.utf-8
LC_ALL=en_US.utf-8
PS:Top answer 建议更改远程服务器上的 /etc/profile
文件,它可以工作,但此文件经常被系统覆盖,并且不会长时间起作用。
/etc/profile
文件包含免责声明:
除非您知道自己在做什么,否则更改此文件不是一个好主意。最好在 /etc/profile.d/ 中创建 custom.sh shell 脚本以对您的环境进行自定义更改,因为这将防止在将来的更新中进行合并。
答案 12 :(得分:-6)
...或者只是单独保留shell并使用TextWrangler,它也允许您选择编码,并可以通过sftp直接打开/保存到您的Ubuntu框。