OS X终端UTF-8问题

Sam*_*ami 43 macos vim ssh terminal utf-8

好吧,经过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支持...:'(

小智 38

对我帮助了这个:我在终端的本地shell上检查了语言环境

$ locale
LANG="cs_CZ.UTF-8"
LC_COLLATE="cs_CZ.UTF-8"
Run Code Online (Sandbox Code Playgroud)

然后通过ssh和编辑后的文件/ etc/profile连接到我正在使用的任何远程主机 - 最后我添加了一行:

export LANG=cs_CZ.UTF-8
Run Code Online (Sandbox Code Playgroud)

在下一次连接后,它在bash,ls和nano中工作正常.

  • 许多用户希望使用"英语(美国)"语言环境而不是捷克语:"en_US.UTF-8". (14认同)

ism*_*ail 17

Terminal -> Preferences -> Advanced (Tab)下井International,并选择Unicode (UTF-8)作为Character Encoding.

打勾Set locale environment variables on startup.


dan*_*elo 16

不幸的是,首选项对话框并不总是非常有用,但通过调整你应该能够使一切正常工作.

为了能够在终端中键入瑞典字符,请将以下行添加到〜/ .inputrc(很可能您必须创建此文件):

set input-meta on
set output-meta on
set convert-meta off
Run Code Online (Sandbox Code Playgroud)

这应该做的工作都与UTF8和其它值编码bash,nano和许多其他程序.有些程序,tmux也取决于locale.然后,例如添加export LC_ALL=en_US.UTF-8到您的~/.profile文件应该有帮助,但请记住,一些(主要是模糊的)程序需要标准的区域设置,因此如果您在运行或编译程序时遇到问题,请尝试返回LC_ALL=C.

一些可能有用的参考资料:


Urb*_*ond 13

以下是OS X Mavericks(10.9)下您需要执行的操作的摘要.这些都归纳为

http://hints.macworld.com/article.php?story=20060825071728278

  1. 转到终端 - >首选项 - >设置 - >高级.

    International下,确保将字符编码设置为Unicode(UTF-8).

    此外,这是关键:在Emulation下,确保未选中使用Control-V的Escape非ASCII输入(即设置).

    这两个设置修复了终端的问题.

  2. 确保您的区域设置设置为结束的内容.UTF-8.输入locale并查看该LC_CTYPE行.如果它没有说en_US.UTF-8(如果您使用非美国英语语言环境,那么点之前的内容可能会改变),那么在您的Bash .profile.bashrc您的主目录中,添加如下所示的行:

    export LC_CTYPE=en_US.UTF-8
    
    Run Code Online (Sandbox Code Playgroud)

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

  3. .inputrc将以下行添加到主目录中(如有必要,请创建它):

    set meta-flag on
    set input-meta on
    set output-meta on
    set convert-meta off
    
    Run Code Online (Sandbox Code Playgroud)

    这使Bash成为8位干净,所以它会传入和传出UTF-8字符,而不会弄乱它们.

请记住,您必须重新启动Bash(例如,关闭并重新打开终端窗口),以使其注意您在上面2和3中所做的所有设置.

  • 做了这一切,仍然得到一个?? o ??你??你???? 在码头的äöüüß:( (3认同)

Aru*_*ius 9

简短的通用答案(适合其他国家语言,甚至立陶宛语或俄语)

  • 打开终端
  • 编辑.profile in home direkctory - nano .profile
  • 添加行 export LC_ALL=en_US.UTF-8
  • 按Ctrl + x和Y(退出并保存)

这解决了我即使是小国罕见的民族性格.您可能需要关闭并打开终端以使更改生效.

此外,如果您喜欢Linux行为(使用很多Alt快捷键,如Alt +.或Alt +,在mc中),那么您应该禁用Mac风格的Option键功能:终端 - >首选项 - >配置文件 - >键盘和复选框: Use Option as Meta key


小智 5

nano根据需要进行工作,请尝试:

export LANG="UTF-8"
Run Code Online (Sandbox Code Playgroud)

或获取nanovia 的更新版本MacPorts

# cf. http://www.macports.org/install.php
port info nano
port variants nano
sudo port install nano +utf8 +color +no_wrap
Run Code Online (Sandbox Code Playgroud)

对于SSH和UTF-8的问题注释掉SendEnv LANG LC_* /etc/ssh_config

请参阅:OS X Lion中的终端:无法在远程计算机上写åäö


azz*_*zid 5

我的终端只是表现得很傻,而不是打印出来的åäö.我发现(并设置)此设置:在此输入图像描述

Terminal -> Preferences... -> Profiles -> Advanced.

似乎解决了我的问题.