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和bashnano等许多其他程序的编码工作。 一些程序,如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

  1. 进入terminal – >首选项 – >设置 – >高级。

    国际下 ,请确保字符编码设置为Unicode(UTF-8)

    此外,这是关键:在仿真下,确保使用Control-V转义非ASCIIinput未选中(即设置)。

    这两个设置修复了Terminal的问题。

  2. 确保您的语言环境设置为以.UTF-8结尾的.UTF-8 。 键入locale并查看LC_CTYPE行。 如果没有说en_US.UTF-8 (如果你使用非美国英语的语言环境,点之前的东西可能会改变),那么在你的主目录的Bash .profile.bashrc中添加一个如下所示:

     export LC_CTYPE=en_US.UTF-8 

    这将解决一般的命令行程序的问题。

  3. 将以.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盒子。