OS XterminalUTF-8的问题
好吧,所以我终于在15年的Linux后为自己做了一台MacBook Air。 而在我得到它之前,我最担心的是UTF-8的支持,因为无论我从Windows或Mac客户端发送给我的文件是否总是与编码有关,而在Ubuntu上,我可以确保所有的输出,不pipe是什么程序产生完美的utf-8编码数据。
现在在我的第二天(今天)OS X Im沮丧地撕毁我的头发。 为什么?
当我打开Nano并在其中键入一些瑞典语字符时,它会在行尾输出空白字符(我猜是每个字符中的另一个字节)
当我打开Python并尝试使用瑞典语字符时,它根本不输出任何内容
当我通过SSH连接到Ubuntu服务器时,我无法在bash中键入åäö,它在VIM中仍然工作(仍然通过SSH)。 而在纳米退格不起作用,但如果在terminal首选项中勾选“删除发送Ctrl + H”,退格开始在纳米工作,但停止在VIM工作。
我已经试过在terminal首选项中取消选中所有其他编码,然后UTF-8,但似乎不工作。
我敢肯定,每个非美国人都必须有同样的问题,所以我可以修复它们吗? 我只想要完整的UTF-8支持…:'(
对我来说,帮助了这一点:我检查了本地shell在terminal上的locale
$ locale LANG="cs_CZ.UTF-8" LC_COLLATE="cs_CZ.UTF-8"
然后连接到任何远程主机,我通过ssh和编辑的文件/ etc / profile作为根用户 – 最后我添加了行:
export LANG=cs_CZ.UTF-8
下次连接后,它在bash,ls和nano中工作正常。
不幸的是,“首选项”对话框并不总是很有帮助,但通过调整你应该能够使所有的工作。
为了能够在terminal中键入瑞典语字符,将以下行添加到〜/ .inputrc(最有可能的是你必须创build这个文件):
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
一些可能有用的参考资料:
转到Terminal -> Preferences -> Advanced (Tab)
下拉到International
和selectUnicode (UTF-8)
作为Character Encoding
。
并勾选Set locale environment variables on startup
。
以下是您需要在OS X Mavericks(10.9)下做什么的总结。 这一切都在总结
http://hints.macworld.com/article.php?story=20060825071728278
-
进入terminal – >首选项 – >设置 – >高级。
在国际下 ,请确保字符编码设置为Unicode(UTF-8) 。
此外,这是关键:在仿真下,确保使用Control-V转义非ASCIIinput未选中(即未设置)。
这两个设置修复了Terminal的问题。
-
确保您的语言环境设置为以
.UTF-8
结尾的.UTF-8
。 键入locale
并查看LC_CTYPE
行。 如果没有说en_US.UTF-8
(如果你使用非美国英语的语言环境,点之前的东西可能会改变),那么在你的主目录的Bash.profile
或.bashrc
中添加一个如下所示:export LC_CTYPE=en_US.UTF-8
这将解决一般的命令行程序的问题。
-
将以
.inputrc
添加到主目录中的.inputrc
(如有必要,创build它):set meta-flag on set input-meta on set output-meta on set convert-meta off
这使得Bash是八位干净的,所以它会传递UTF-8字符而不会混淆它们。
请记住,您将不得不重新启动Bash(例如,closures并重新打开terminal窗口),以使其注意您在上面2和3中所做的所有设置。
检查nano是否使用UTF-8支持实际构build,使用nano --version
。 这里是在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
注意最后一点。
要使nano
工作正常,请尝试:
export LANG="UTF-8"
或者通过MacPorts
获取更新版本的nano
:
# 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
注释SendEnv LANG LC_*
。
请参阅: OS X Lion中的terminal:无法在远程计算机上写入数据
由于纳米是一个terminal应用程序。 我想这是一个terminal问题,而不是一个纳米问题。
我在OS X遇到类似的问题(我不能在terminalinput和查看中文字符)。
我尝试通过OS X UI调整系统设置,其实际效果是改变环境variablesLANG。
所以最后我只是添加一些东西到〜/ .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_ *设置。
我的terminal只是在愚蠢的行事,而不是打印出åäö。 我发现(并设置)这个设置:
在Terminal -> Preferences... -> Profiles -> Advanced
。
似乎已经解决了我的问题。
短的多function答案(适合其他民族语言,甚至立陶宛语或俄语)
- 打开terminal
- 在home direkctory中编辑.profile –
nano .profile
- 添加行
export LC_ALL=en_US.UTF-8
这为我解决了小国罕见的民族性格。 您可能需要closures并打开terminal才能使更改生效。
此外,如果你喜欢Linux的行为(使用很多的Alt快捷键如Alt +或Alt +,在MC),那么你应该禁用Mac风格的选项键function:terminal – >首选项 – >configuration文件 – >键盘和checkbox: Use Option as Meta key
在我的情况下,简单地使用uxterm
命令而不是xterm
解决了这个问题。 它通过安装Apple提供的XQuartz软件包在/opt/X11/bin/uxterm
可用。
…或者只是保持shell独立,并使用TextWrangler,它也可以让你select编码,并可以通过sftp直接打开/保存回你的Ubuntu盒子。