Bagaimana cara memperbaiki Putty menampilkan karakter yang kacau?


77

Menghubungkan dari PC Windows 7 melalui SSH ke server Ubuntu menggunakan Putty , saya mendapatkan beberapa kesalahan layar:

masukkan deskripsi gambar di sini

Yaitu:

  • "Double-draws" pilihan di dalam Midnight Commander (MC).
  • Karakter lain seperti elemen garis digambar sebagai karakter yang salah (mis. "Â" bukannya "|").

Saya terhubung ke server Ubuntu yang sama dengan terminal dan SHH dari Mac OS X dan tidak mendapatkan layar ini kacau (yaitu semuanya terlihat dan berfungsi dengan benar). Saya sudah mencoba bermain dengan pengaturan font di dalam Putty, mengubahnya dari Courier New ke Consolas tetapi tidak berhasil.

Karena itu pertanyaan saya adalah:

Bagaimana cara mengkonfigurasi Putty untuk menampilkan karakter khusus dengan benar dan tidak menggambar dua kali / menimpa garis layar?


1
Dengan SecureCRT: Pilih Pilihan -> Opsi Sesi -> Terminal -> Tampilan -> Pengkodean karakter -> pilih: UTF-8. Semoga membantu orang lain seperti saya!
Vunb

Jawaban:


72

Anda hampir pasti telah menetapkan set karakter yang salah dalam pengaturan Putty Anda .

Verifikasi set karakter pada sistem jarak jauh dengan menjalankan perintah:

locale

Ini akan menghasilkan sesuatu seperti:

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=

Jadi, periksa pengaturan Putty Anda di bawah Terjemahan dan pastikan bahwa Anda telah UTF-8menetapkan sebagai set karakter.

Konfigurasi ulang Putty

Anda mungkin perlu mengubah pengaturan gambar garis juga, tetapi mungkin tidak.


14
Ini tidak memadai dalam semua kasus. Anda juga harus mengekspor variabel berikut ke lingkungan Anda: NCURSES_NO_UTF8_ACS=1 [info lebih lanjut ]
Piotr Jurkiewicz

2
dalam kasus localepengembalian, POSIXAnda mungkin menonaktifkan usePAM di sshd config
user2693017

4
Jika lokal mengembalikan sesuatu seperti POSIX, terbitkan update-locale LANG=en_US.utf8di baris perintah - lihat thomas-krenn.com/de/wiki/Locales_unter_Ubuntu_konfigurieren
koppor

@ michael-hampton, sistem saya dikonfigurasi untuk menggunakan en_US.UTF-8. Saya melihat bahwa tempat yang berbeda mengatakan hal yang berbeda tentang lokal. Beberapa tempat menyebutkan saya harus menggunakan en_US sementara tempat lain menyebutkan saya harus menggunakan de_DE. Saya melihat sebelum grep dan utilitas inti lainnya menggunakan lokal untuk mengatur set karakter, saya percaya. Apa implikasi dari mengubah ini?
alpha_989

@koppor, Anda menyebutkan tentang mengubah lokal ke en_US, sementara michael menyebutkan mengubah lokal ke de_DE. Yang mana yang benar?
alpha_989

34

Saya memiliki masalah dengan aptitudeprogram Debian meskipun saya memiliki UTF-8 saat karakter saya ditetapkan. Yang berhasil bagi saya adalah mengatur 'Koneksi> Data>' Terminal-type string 'menjadi' dempul 'dan bukannya' xterm '- tampaknya Putty mengabaikan urutan karakter untuk beralih ke mode menggambar: http: //www.chiark.greenend .org.uk / ~ sgtatham / putty / wishlist / utf8-plus-vt100.html

masukkan deskripsi gambar di sini


2
Luar biasa. Mudah dan berhasil. (Setidaknya itu terjadi di Debian / Ubuntu.)
Nate

1
Ini berfungsi dengan baik (pada Putty) tetapi kemudian memperkenalkan masalah lain (lebih kecil): judul jendela yang dikontrol dari jarak jauh tidak lagi berfungsi.
ADTC

Luar biasa. Memecahkan masalah untuk ncmpc di Ubuntu Artful.
weberjn


8

Dua faktor dasar adalah Window / Terjemahan UTF-8 di pengaturan dempul dan lokal di Linux, seperti yang diperintahkan di sini dan banyak tempat lainnya.

Selain itu, mungkin membantu dalam dempul mengatur string Koneksi / Data / Terminal menjadi dempul , dan / atau di Linux export NCURSES_NO_UTF8_ACS=1. Keduanya juga disebut beberapa tempat.

Tetapi: Anda mungkin masih mendapatkan blok untuk karakter tertentu karena font default seperti Courier dan Lucida Console tidak memiliki semua karakter Unicode. Unduh dan instal http://dejavu-fonts.org/wiki/Download , dan atur dempul untuk menggunakannya.

Trik terakhir ini penting bagi saya untuk mendapatkan noping(disarankan!) Untuk menunjukkan semua karakter grafik.


2
export NCURSES_NO_UTF8_ACS=1bekerja paling baik untuk saya. Saya hanya perlu ingat untuk menggunakan -Eopsi pada sudosaat saya menjalankan iftopuntuk menjaga pengaturan lingkungan itu. sudo -E iftop
HeatfanJohn

5

Dalam kasus saya (Ubuntu 14.04) masalah ini disebabkan oleh hilang

UsePAM yes    

entri di / etc / ssh / sshd_config sebagai /etc/pam.d/sshd konfigurasi pam bertanggung jawab secara default untuk memuat / etc / default / locale ke dalam lingkungan pengguna.


Ini memperbaikinya untuk saya.
Martin

5

Untuk kalian semua VMS tua yang malang yang berakhir di sini:

Putty → Jendela → Terjemahan → Kumpulan karakter jarak jauh → DEC-MCS

bekerja untukku.


4

Saya mencari banyak solusi untuk ini ketika menggunakan mesin Docker (baik lokal maupun pada mesin yang diatur oleh administrator sistem). Dalam Putty saya semuanya baik-baik saja (saya punya UTF-8), saya juga menggunakan klien SSH lain dan memiliki masalah yang sama persis.

Berlari:

mc -ac

sedang memecahkan masalah (tetapi tidak sepenuhnya) dan saya sedang mencari solusi lengkap.

Setelah membaca banyak saran, saya akhirnya menemukan satu yang menyelesaikan masalah saya.

Di terminal saat Anda menjalankan:

locale

verifikasi lokal apa yang telah Anda tentukan. Saya memiliki secara default Clokal.

Untuk memverifikasi semua jalankan lokal diinstal locale -a

Saya punya misalnya:

C
C.UTF-8
POSIX

secara default.

Solusinya adalah mengekspor LANGvariabel dengan C.UTF-8lokal seperti:

export LANG="C.UTF-8"

Anda jelas dapat menambahkannya .bashrcagar diatur secara otomatis di profil Anda.


Apa efek samping dari perubahan variabel LANG? Jika Anda sudah memiliki C.UTF-8 sebagai LANG, mengapa harus mengekspornya lagi?
alpha_989

2

Alasan lain terkait dengan pam yang mungkin mempengaruhi host dengan powerbroker / pbis / otentikasi juga.

grep /etc/pam.d untuk kejadian "lsass":

grep -r lsass /etc/pam.d

jika Anda melihat sesuatu di output seperti:

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

maka itu mungkin akar penyebab masalahnya. Perbaikan cepat adalah mengganti "cukup" dengan "opsional" di sebelah modul pam_lsass sehingga terlihat seperti:

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

/etc/pam.d/common-session (atau file lain dengan entri serupa - mungkin ada beberapa) mungkin disertakan oleh /etc/pam.d/sshd sebelum pam_env dimuat, jadi jika pemrosesan modul pam selesai sebelum sampai ke pam_env, / etc / default / locale tidak dimuat di lingkungan pengguna dan Anda memiliki karakter yang kacau.


2

Setelah 15 tahun saya merasa jengkel sekali lagi dan mencari-cari lagi, menemukan ini, memilih

ubah pengaturan → jendela → terjemahan → set karakter jarak jauh → "gunakan pengkodean font"

dan itu memperbaikinya.


2

Saya harus mengatur, pada halaman WindowTranslation , karakter diatur ke:

ISO-8859-1: 1998 (Latin-1, Eropa Barat)

Kemudian, dan hanya kemudian, apakah karakter linedraw muncul dengan benar.


1

Menjalankan mc dengan cara ini (set lokal ke en) berfungsi untuk saya:

$ LC_ALL=en mc

1

apa yang bekerja untuk saya adalah "Koneksi, Data, tipe terminal-string = ansi" ditambah "Window, Terjemahan, set karakter Remote = Gunakan pengkodean font" kemudian set TERM=ansidi sisi unix.

PS. Ingatlah untuk mematikan kutipan pintar jika Anda dipaksa untuk menggunakan MS-Word.


1
Anda juga harus menyebutkan bahwa Anda tidak terhubung ke sistem LInux modern, tetapi sistem non-Linux yang lebih lama.
Michael Hampton

1

Masalah saya adalah bahwa dempul dikonfigurasi sebagai UTF-8 tetapi sistem jarak jauh adalah ISO-8859-1

Eropa barat, jadi saya mengubah itu pada dempul dan apa pun bekerja dengan baik.

Tangkapan layar Putty

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.