ssh dan pengkodean karakter

16

Ketika saya sshmasuk ke VPS, saya sudah irssiberjalan di layar. Ketika seseorang mengirim karakter unicode (seperti © atau €), irssimenampilkan sampah ketika saya menggunakannya melalui layar dalam suatu sshsesi. Jika saya terhubung ke yang irssimenggunakan modul proxy irssi, dari irssi berjalan di komputer lokal saya, itu muncul dengan benar.

Demikian juga, jika saya menjalankan ghci di VPS saya (di luar layar) dan memasukkan salah satu karakter itu, itu crash.

Jadi, jelas, ada semacam masalah pengkodean karakter dengan koneksi saya ke VPS saya, baik di ssh atau pengaturan sistem.

Bagaimana saya bisa mengetahui apa yang menyebabkan ini, dan menyelesaikannya?

Detail:

Sistem klien

  • Arch Linux x64
  • Pengkodean UTF-8

Sistem VPS

  • Ubuntu Server 10.04
  • Pengodean tidak dikenal digunakan. Bagaimana saya menemukan ini? (Saya hanya perlu mencari di /etc/rc.conf untuk Arch)
Macha
sumber

Jawaban:

18

Menjalankan localeperintah akan memberi Anda informasi tentang pengaturan lokal Anda; pengkodean karakter diberikan oleh LC_CTYPEpengaturan.

Di bawah Ubuntu, pengaturan lokal default diberikan di /etc/default/locale. Anda dapat mengubah pengkodean karakter dengan mengatur LC_CTYPEdi ~/.profileVPS Anda, misalnya

export LC_CTYPE=en_US.UTF-8

Anda harus memastikan bahwa en_US.UTF-8lokal tersedia. Ubuntu hanya menghasilkan data lokal untuk lokal yang diminta. Semua bahasa Inggris harus tersedia jika Anda memiliki paket yang language-pack-en-basediinstal. Anda dapat secara manual meminta generasinya

sudo locale-gen en

Anda juga dapat menambahkan entri untuk /var/lib/locales/supported.d/localmemastikan lokal tertentu diinstal (misalnya, tambahkan baris en_US.UTF-8 UTF-8).

Gilles 'SO- berhenti menjadi jahat'
sumber
3

sebenarnya nilai yang diberikan dalam LC_CTYPE adalah nama lokal . Merupakan kebiasaan, tetapi tidak diharuskan, bahwa pengkodean charset ada dalam namanya.

Tetapi jika Anda ingin tahu, pasti, charset, maka perintahnya adalah locale -k charmap.

~$ LC_CTYPE=C locale -k charmap
charmap="ANSI_X3.4-1968"
~$ LC_CTYPE=fr_BE locale -k charmap
charmap="ISO-8859-1"

(perhatikan bagaimana charset tidak muncul pada nilai LC_TYPE di atas).

Pablo Saratxaga
sumber