web-dev-qa-db-ja.com

OS XターミナルUTF-8の問題

さて、15年のLinuxの後、ついにMacBook Airを手に入れました。そして、私がそれを手に入れる前に私の大きな懸念はUTF-8サポートでした。なぜなら、WindowsまたはMacクライアントからファイルが送られてきても、常にエンコーディングの問題があるからです完璧なutf-8エンコードデータを生成します。

そして今、OS Xの2日目(今日)に、欲求不満で髪を引き裂いています。どうして?

Nanoを開いてÅÄÖなどのスウェーデン語の文字を入力すると、行末に空白文字が表示されます(各文字のもう一方のバイトです)

pythonを開いてスウェーデン語の文字を使用しようとすると、何も出力されません

SSHを介してUbuntuサーバーに接続する場合、bashでåäöと入力することはできません。VIM(まだSSHを介して)で動作します。削除は、ターミナルの設定でctrl + H "を送信します。バックスペースはnanoでは機能し始めますが、VIMでは機能しなくなります。

私は他のすべてのエンコーディングのチェックを外し、ターミナル設定でUTF-8をオフにしましたが、どちらも機能していないようです。

すべての非米国人が同じ問題を抱えているに違いないと思うので、私はそれらを修正する必要がありますか? UTF-8を完全にサポートしたいだけです...: '(

43
Sami

私にこれを助けました:ターミナルのローカルシェルのロケールをチェックしました

$ locale
LANG="cs_CZ.UTF-8"
LC_COLLATE="cs_CZ.UTF-8"

次に、ssh経由で使用しているリモートホストに接続し、/ etc/profileファイルをルートとして編集しました-最後に次の行を追加しました:

export LANG=cs_CZ.UTF-8

次の接続後、bash、ls、nanoで正常に動作します。

38
angeldust

Terminal -> Preferences -> Advanced (Tab)に移動してInternationalに移動し、Unicode (UTF-8)を_Character Encoding_として選択します。

_Set locale environment variables on startup_にチェックマークを付けます。

17
ismail

残念ながら、Preferencesダイアログは常に非常に役立つわけではありませんが、微調整することですべてが機能するはずです。

ターミナルでスウェーデン語の文字を入力できるようにするには、次の行を〜/ .inputrcに追加します(ほとんどの場合、このファイルを作成する必要があります)。

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

参考になる参考文献:

16
danmichaelo

以下は、OS X Mavericks(10.9)で必要なことの概要です。これはすべてで要約されます

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

  1. 「ターミナル」->「設定」->「設定」->「詳細設定」に移動します。

    Internationalで、文字エンコードがnicode(UTF-8)に設定されていることを確認します。

    また、これは重要です:Emulationで、Control-Vで非ASCII入力をエスケープがオフになっていることを確認してください(つまり、not set)です。

    これら2つの設定は、ターミナルの問題を修正します。

  2. ロケールが.UTF-8で終わるものに設定されていることを確認してください。 localeと入力して、LC_CTYPE行を確認します。 en_US.UTF-8(米国英語以外のロケールを使用している場合、ドットの前のものが変わる可能性があります)のようなことを言わない場合、Bashで.profileまたは.bashrcホームディレクトリに、次のような行を追加します。

    export LC_CTYPE=en_US.UTF-8
    

    これにより、一般的なコマンドラインプログラムの問題が修正されます。

  3. ホームディレクトリの.inputrcに次の行を追加します(必要に応じて作成します)。

    set meta-flag on
    set input-meta on
    set output-meta on
    set convert-meta off
    

    これにより、Bashは8ビットクリーンになり、UTF-8文字を混乱させることなく入出力できます。

上記の2および3で行ったすべての設定に注意を払うには、Bashを再起動する必要があります(たとえば、ターミナルウィンドウを閉じて再度開く)。

13
Urban Vagabond

短い汎用性のある回答(他の言語、リトアニア語やロシア語にも対応)

  • ターミナルを開く
  • ホームディレクトリの.profileを編集-nano .profile
  • export LC_ALL=en_US.UTF-8を追加
  • ctrl + xおよびYを押します(終了して保存)

これは、私にとっては小さな国でも珍しい国民的特徴を解決しました。変更を有効にするには、ターミナルを閉じて開く必要があります。

Linuxの動作が好きな場合(mcでAlt +。やAlt +などのAltショートカットを多数使用する場合)、MacスタイルのOptionキー機能を無効にする必要があります:Terminal-> Preferences-> Profiles-> Keyboard and check box:Use Option as Meta key

9

私の端末はåäöを出力するのではなく、単にばかげているだけです。私はこの設定を見つけました(そして設定しました): enter image description here

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

私の問題を解決したようです。

5
azzid

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_* in /etc/ssh_config

参照: OS X Lionのターミナル:リモートマシンでåäöを書き込めない

5
virtuz

nano --versionを使用して、nanoが実際にUTF-8サポートで構築されているかどうかを確認します。 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

最後のビットに注意してください。

3
ak2

Nanoは端末アプリケーションです。ナノの問題というよりも、最終的な問題だと思います。

OS Xでも同様の問題が発生しました(ターミナルで中国語の文字を入力および表示できません)。

実際の効果が環境変数LANGの変更であるOS X UIを使用して、システム設定を調整してみました。

最後に、問題を修正するために〜/ .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_ *設定を上書きするLC_ALLを設定しないでください。

1
chen bin

試してみる

  1. Powerline互換フォントがインストールされている https://github.com/powerline/fonts
  2. これらのENV変数を.zshrcまたは.bashrcに設定する:
 LANG = "en_US.UTF-8" 
 LC_COLLATE = "en_US.UTF-8" 
 LC_CTYPE = "en_US.UTF-8" 
 LC_MESSAGES = " en_US.UTF-8 "
 LC_MONETARY =" en_US.UTF-8 "
 LC_NUMERIC =" en_US.UTF-8 "
 LC_TIME =" en_US.UTF-8 "
 LC_ALL = "en_US.UTF-8" 
0
Dmitriy

私の場合、uxtermの代わりにxtermコマンドを使用するだけで問題は解決しました。 /opt/X11/bin/uxterm Appleが提供するXQuartzパッケージをインストールする。

0
Jay