Подтвердить что ты не робот

Проблемы с 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...: '(

4b9b3361

Ответ 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.