Проблемы с OS X Terminal UTF-8
Хорошо, поэтому я наконец получил MacBook Air после 15 лет работы Linux. И прежде чем я понял, что моя большая забота - поддержка UTF-8, потому что независимо от того, получаю ли я файлы, отправленные мне из окон или mac-клиентов, всегда возникает проблема с кодировкой, а на ubuntu я могу быть уверен, что всякий вывод не зависит от того, какая программа будет производят совершенные кодированные данные utf-8.
А теперь на мой второй день (сегодня) с OS X Im разрывает мои волосы от разочарования. Почему?
Когда я открываю Nano и набираю в нем некоторые шведские символы, такие как ÅÄÖ, он выводит пустые символы в конце строки (что, я думаю, это другой байт в каждом символе)
Когда я открываю python и пытаюсь использовать символы шведского языка, он вообще ничего не выводит
Когда я подключаюсь к серверу Ubuntu через SSH, я не могу напечатать åäö в bash, жесткий он работает в VIM (все еще через SSH). А в nano backspace не работает, но если установить флажок "Удалить отправляет ctrl + H" в настройках терминала, backspace начнет работать в nano, но перестанет работать в VIM.
Я попытался отключить все другие кодировки, а затем UTF-8 в настройках терминала, но это тоже не работает.
Я уверен, что у каждого не-американского человека должны быть одинаковые проблемы, поэтому я их исправлю? Я просто хочу, чтобы полная поддержка UTF-8...: '(
Ответы
Ответ 1
Мне помогло это:
Я проверил локаль на своей локальной оболочке в терминале
$ locale
LANG="cs_CZ.UTF-8"
LC_COLLATE="cs_CZ.UTF-8"
Затем подключается к любому удаленному хосту, который я использую через ssh и отредактировал файл /etc/profile как root - в конце я добавил строку:
export LANG=cs_CZ.UTF-8
После следующего соединения он отлично работает в bash, ls и nano.
Ответ 2
К сожалению, диалог настроек не всегда очень полезен, но благодаря настройке вы должны быть способны все работать.
Чтобы иметь возможность вводить шведские символы в терминале, добавьте следующие строки в ~/.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
.
Некоторые рекомендации, которые могут быть полезны:
Ответ 3
Перейдите к Terminal -> Preferences -> Advanced (Tab)
, перейдите к International
и выберите Unicode (UTF-8)
как Character Encoding
.
И отметьте Set locale environment variables on startup
.
Ответ 4
Ниже приводится краткое описание того, что вам нужно сделать в OS X Mavericks (10.9). Все это суммируется в
http://hints.macworld.com/article.php?story=20060825071728278
-
Перейдите в Terminal- > Preferences- > Settings- > Advanced.
В разделе Международный убедитесь, что для кодировки символов установлено значение Юникод (UTF-8).
Кроме того, и это ключ: в Эмуляция убедитесь, что Escape не-ASCII-вход с Control-V не установлен (т.е. не установлен).
Эти две настройки фиксируют вещи для терминала.
-
Убедитесь, что ваш язык установлен на то, что заканчивается на .UTF-8
. Введите locale
и посмотрите на строку LC_CTYPE
. Если он не говорит что-то вроде en_US.UTF-8
(материал до того, как точка может измениться, если вы используете неамериканско-английский язык), затем в Bash .profile
или .bashrc
в вашем домашнем каталоге, добавьте следующую строку:
export LC_CTYPE=en_US.UTF-8
Это будет исправлять вещи для программ командной строки в целом.
-
Добавьте следующие строки в .inputrc
в свой домашний каталог (при необходимости создайте его):
set meta-flag on
set input-meta on
set output-meta on
set convert-meta off
Это означает, что Bash будет восьмибитным, поэтому он будет пропускать символы UTF-8 и не вмешиваться в них.
Имейте в виду, что вам придется перезапустить Bash (например, закрыть и снова открыть окно терминала), чтобы заставить его обратить внимание на все настройки, которые вы делаете в пунктах 2 и 3. выше.
Ответ 5
Проверьте, действительно ли nano была построена с поддержкой UTF-8, используя 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: [email protected] Web: http://www.nano-editor.org/
Compiled options: --enable-color --enable-extra --enable-multibuffer
--enable-nanorc --enable-utf8
Обратите внимание на последний бит.
Ответ 6
Чтобы сделать 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
.
Смотрите: Терминал в OS X Lion: не удается записать åäö на удаленном компьютере
Ответ 7
Так как nano является терминальным приложением. Я предполагаю, что это скорее проблема с терминалом, чем проблема с 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"
BTW, не устанавливайте LC_ALL, который переопределит все остальные настройки LC_ *.
Ответ 8
Мой терминал просто действовал глупо, а не печатал åäö. Я нашел (и установил) этот параметр: ![enter image description here]()
В разделе Terminal -> Preferences... -> Profiles -> Advanced
.
Кажется, я исправил свою проблему.
Ответ 9
Кратко универсальный ответ (соответствует другим национальным языкам, даже литовским или русским)
- открыть терминал
- изменить .profile в home direkctory -
nano .profile
- добавить строку
export LC_ALL=en_US.UTF-8
Это решило для меня даже маленькую страну редких национальных героев. Возможно, вам придется закрыть и открыть терминал, чтобы сделать изменения эффективными.
Также, если вам нравится поведение Linux (используйте множество комбинаций клавиш Alt, например Alt + или Alt +, в mc), вы должны отключить функцию ключа стиля Mac:
Terminal- > Настройки- > Профили- > Клавиатура и флажок:
Use Option as Meta key
Ответ 10
В моем случае просто с помощью команды uxterm
вместо xterm
решена проблема. Он доступен в /opt/X11/bin/uxterm
, установив пакет XQuartz, предоставленный Apple.
Ответ 11
... Или просто оставьте оболочку в покое и используйте TextWrangler, который также позволяет вам выбирать кодировку и открывать/сохранять обратно непосредственно в поле Ubuntu через sftp.