Saya mengalami beberapa masalah dengan penggunaan ssh
dan server jarak jauh (yang saya tidak punya akses admin) - Secara khusus, ada beberapa folder di sana dengan teks Korea dan Cyrillic.
Ketika saya menampilkan isi folder induk ls
, karakter-karakter tersebut diloloskan sebagai "?". Mungkin yang perlu diperhatikan adalah bahwa karakter Korea tampaknya jauh lebih banyak daripada jumlah karakter yang seharusnya ada.
Saya tahu bahwa program terminal yang saya gunakan dapat menampilkan karakter, seperti menggunakan sftp
tampilan mereka dengan sempurna. Masalah terjadi di semua terminal yang saya coba.
Ringkasan mesin
Mesin lokal:
- Linux 2.6.32-5-686, i686
- Debian GNU / Linux 6.0.2 (pemerasan)
- Memiliki akses admin
Server jarak jauh:
- Linux 2.6.32-bpo.5-amd64, x86_64
- Debian GNU / Linux 5.0.8 (lenny)
- Tidak memiliki akses admin, maupun fisik
Saya mungkin melewatkan beberapa statistik penting atau sedikit informasi, dalam hal ini saya minta maaf. Saya cukup baru di seluruh sisi komputasi non-Windows, jadi saya hampir tidak tahu apa yang saya lakukan di sini.
sumber
locale
danlocale -a
perintah, baik secara lokal maupun jarak jauh, tolongJawaban:
Informasi lokal Anda tidak diatur dengan benar di mesin server. Secara khusus,
LC_CTYPE
variabel, yang menunjukkan pengkodean karakter pada terminal, tidak diatur dengan benar (atau, saya curiga, sama sekali).Di terminal lokal Anda, jalankan
locale
untuk melihat pengaturan lokal Anda. Anda mungkin akan melihat (di antara baris lain) sesuatu sepertiLC_CTYPE=en_US.UTF-8
; yang penting di sini adalah.UTF-8
bagian, yang menunjukkan pengkodean UTF-8 . Ini adalah penyandian standar de facto untuk teks multibahasa di dunia unix (dan lebih jauh).Anda perlu meneruskan informasi ini ke server. Cara terbaik, jika berfungsi, adalah mengirim informasi lokal melalui koneksi ssh. Untuk ini, tambahkan baris berikut di akhir
~/.ssh/config
:Ini mensyaratkan bahwa
AcceptEnv
direktif yang sesuai harus ada dalam konfigurasi server (/etc/ssh/sshd_config
) (ini secara default pada Debian).Jika itu tidak berhasil, dan Anda selalu masuk ke server dari terminal UTF-8, tambahkan baris
export LC_CTYPE=en_US.UTF-8
ke~/.bashrc
server Anda (atau~/.zshrc
file apa pun yang digunakan shell Anda). Nama lokal (mis.en_US.UTF-8
) Harus salah satu dari yang ditawarkan olehlocale -a
, dan harus memiliki.UTF-8
(.utf8
atau beberapa variasi sepele).sumber
locale
keluarannya cocok). Namun,locale -a
dari jarak jauh hanya memberi en_GB.utf8 dan en_US.utf8. Terima kasih!locale charmap
/etc/ssh/ssh_config
LANG
SendEnv LANG LC_*
export LC_CTYPE=en_US.UTF-8
saya~/.profile
di sisi server. Menambahkannya ke~/.bashrc
tampaknya tidak berpengaruh.