文字化けした文字を表示するPuTTYの修正方法


77

PuTTYを使用してWindows 7 PCからSSH経由でUbuntuサーバーに接続すると、画面エラーが発生します。

ここに画像の説明を入力してください

すなわち:

  • ミッドナイトコマンダー(MC)内の選択を「ダブルドロー」します。
  • 行要素のような他の文字は、間違った文字として描画されます(たとえば、「|」ではなく「â」)。

ターミナルとMac OS XのSHHを使用して同じUbuntuサーバーに接続しましたが、これらの画面が乱れることはありません(つまり、すべてが正しく表示され、動作します)。私はすでにPuTTY内のフォント設定を試してみて、Courier NewからConsolasに変更しましたが、運はありません。

したがって、私の質問は次のとおりです。

PuTTYを構成して、画面行を二重描画/上書きしないように、特殊文字を正しく表示する方法は?


1
SecureCRTの場合:[オプション]-> [セッションオプション]-> [ターミナル]-> [外観]-> [文字エンコーディング]-> [UTF-8]を選択します。私のような人を助けてください!
Vunb

回答:


72

ほとんど間違いなく、PuTTY設定で間違った文字セットを設定しています

次のコマンドを実行して、リモートシステムの文字セットを確認します。

locale

次のような結果が返されます。

LANG=de_DE.UTF-8
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=

そのため、翻訳の下のPuTTY設定を確認しUTF-8、文字セットとして設定されていることを確認してください。

PuTTY再構成

線の描画設定も微調整する必要があるかもしれませんが、おそらくそうではないでしょう。


14
これはすべての場合に十分ではありません。また、次の変数を環境にエクスポートする必要があります。NCURSES_NO_UTF8_ACS=1 [詳細 ]
Piotr Jurkiewicz

2
場合にlocale返すPOSIXおそらくusePAMはSSHDの設定で無効にしている
user2693017

4
ロケールがのようなものを返す場合、コマンドラインPOSIXで発行update-locale LANG=en_US.utf8します-thomas-krenn.com/de/wiki/Locales_unter_Ubuntu_konfigurieren
koppor

@ michael-hampton、私のシステムはen_US.UTF-8を使用するように構成されています。ロケールについては、場所ごとに異なることを言っているようです。一部の場所ではen_USを使用する必要があると述べていますが、他の場所ではde_DEを使用する必要があると述べています。grepや他のコアユーティリティがロケールを使用して文字セットを設定する前に見ました。これを変更することのインプリケーションは何ですか?
alpha_989

@koppor、ロケールをen_USに変更することについて言及しましたが、マイケルはロケールをde_DEに変更することについて言及しました。どちらが正しいか?
alpha_989

34

aptitude文字セットとしてUTF-8を使用していても、Debianのプログラムに問題がありました。私のために働いたのは、「接続>データ>「端末タイプ文字列」を「xterm」ではなく「putty」に設定することでした-どうやらPuttyは文字シーケンスを無視して描画モードに切り替えます:http://www.chiark.greenend .org.uk /〜sgtatham / putty / wishlist / utf8-plus-vt100.html

ここに画像の説明を入力してください


2
優れた。簡単で動作します。(少なくともそれは、Debian / Ubuntuの上で行います。)
ネイト

1
これは(PuTTYで)うまく機能しますが、別の(より小さな)問題が発生します:リモート制御ウィンドウのタイトル変更が機能しなくなります。
ADTC

優れた。Ubuntu Artfulでのncmpcの問題を解決しました。
weberjn


8

2つの基本的な要因は、ここで説明するように、Linuxのパテとロケール設定でのWindow / Translation UTF-8です。

さらに、Connection / Data / Terminal-type文字列をputtyに設定したり、Linuxでに設定すると、puttyで役立つ場合がありますexport NCURSES_NO_UTF8_ACS=1。これら2つは複数の場所でも言及されています。

ただし、CourierやLucida ConsoleなどのデフォルトのフォントにはすべてのUnicode文字が含まれていないため、特定の文字に対してブロックが発生する場合があります。http://dejavu-fonts.org/wiki/Downloadをダウンロードしてインストールし、それを使用するようにパテを設定します。

この最後のトリックは、nopingすべてのグラフィックキャラクターを表示するために(推奨!)必要でした。


2
export NCURSES_NO_UTF8_ACS=1私にとって最高の働きをしました。その環境設定を維持するために、実行時に-Eオプションを使用することを忘れないでください。sudoiftopsudo -E iftop
HeatfanJohn

5

私の場合(Ubuntu 14.04)、問題は

UsePAM yes    

/etc/pam.d/sshdとしての/ etc / ssh / sshd_configのエントリpam構成は、デフォルトで/ etc / default / localeをユーザー環境にロードします。


これは私のためにそれを修正しました。
マーティン

5

ここで終わるあなたのすべての貧しい古いVMSの人たちのために:

PuTTY→ウィンドウ→翻訳→リモート文字セット→DEC-MCS

私のために働いた。


4

Dockerマシン(ロケールとシステム管理者がセットアップしたマシンの両方)を使用するときに、このための多くのソリューションを探していました。私のPuttyではすべてがうまくいきました(私が持っていたUTF-8)、私は他のSSHクライアントも使用していて、まったく同じ問題がありました。

ランニング:

mc -ac

問題を解決していましたが(完全ではありません)、完全な解決策を探していました。

多くの提案を読んだ後、私は最終的に私の問題を解決したものを見つけました。

ターミナルで実行すると:

locale

設定したロケールを確認します。デフォルトのCロケールでした。

インストールされているすべてのロケールを確認するには locale -a

例えば:

C
C.UTF-8
POSIX

デフォルトで。

ソリューションは、次のようなロケールでLANG変数をエクスポートしていC.UTF-8ます:

export LANG="C.UTF-8"

明らかにそれを追加して.bashrc、プロファイルに自動的に設定させることができます。


LANG変数を変更した場合の副作用は何ですか?既にC.UTF-8をLANGとして使用している場合、なぜ再びエクスポートするのですか?
alpha_989

2

powerbroker / pbis / likewise認証を使用するホストに影響を与える可能性があるpamに関連する別の理由。

「lsass」が発生した場合のgrep /etc/pam.d:

grep -r lsass /etc/pam.d

出力に次のようなものがある場合:

/etc/pam.d/common-session:session       sufficient        pam_lsass.so

それはおそらく問題の根本的な原因です。簡単な修正方法は、pam_lsassモジュールの横にある「十分」を「オプション」に置き換えることです。

/etc/pam.d/common-session:session       optional        pam_lsass.so

/etc/pam.d/common-session(または同様のエントリを持つ他のファイル-それらの数は少ないかもしれません)は、おそらくpam_envがロードされる前に/etc/pam.d/sshdに含まれるため、pamモジュールの処理が終了しますpam_envになる前に、/ etc / default / localeはユーザー環境にロードされておらず、文字化けしています。


2

15年後、私はもう一度イライラし、再びグーグルで探して、これを見つけて、選んだ

設定の変更→ウィンドウ→翻訳→リモート文字セット→「フォントエンコーディングを使用」

そしてそれはそれを修正しました。


2

私が上で、設定する必要がありましたウィンドウ ]→[ 翻訳、ページに文字セットを:

ISO-8859-1:1998(Latin-1、西ヨーロッパ)

そして、そのときだけ、線画文字が正しく表示されました。


1

mcをこのように実行する(ロケールをenに設定する)ことは私にとってはうまくいきます:

$ LC_ALL=en mc

1

私のために働いたのは、「接続、データ、ターミナルタイプ文字列= ANSI」に加えて、「ウィンドウ、翻訳、リモート文字セット=フォントエンコーディングを使用」、そしてset TERM=ansiUnix側でした。

PS。MS-Wordの使用を強制される場合は、スマートクオートを忘れずにオフにしてください。


1
また、最新のLInuxシステムではなく、古いLinux以外のシステムに接続していることにも言及してください。
マイケルハンプトン

1

私の問題は、パテがUTF-8として構成されているが、リモートシステムがISO-8859-1であるということでした

西ヨーロッパなので、私はパテでそれを変更し、何でもうまくいきました。

Puttyスクリーンショット

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.