ssh และการเข้ารหัสอักขระ


17

เมื่อฉันsshเข้าสู่ VPS ของฉันฉันได้irssiทำงานในหน้าจอ เมื่อมีคนส่งอักขระยูนิโค้ด (เช่น©หรือ€) irssiแสดงขยะเมื่อฉันใช้ผ่านหน้าจอในsshเซสชัน หากฉันเชื่อมต่อกับสิ่งนั้นirssiโดยใช้โมดูลพร็อกซีของ irssi จาก irssi ที่ทำงานบนเครื่องคอมพิวเตอร์ของฉันมันจะแสดงขึ้นอย่างถูกต้อง

ในทำนองเดียวกันถ้าฉันใช้ ghci บน VPS (นอกจอ) และป้อนหนึ่งในตัวละครเหล่านั้นมันก็จะล่ม

ดังนั้นเห็นได้ชัดว่ามีปัญหาการเข้ารหัสตัวอักษรของการเรียงลำดับบางอย่างกับการเชื่อมต่อของฉันกับ VPS ของฉันทั้งใน ssh หรือการตั้งค่าระบบ

ฉันจะทราบได้อย่างไรว่าเกิดอะไรขึ้นและแก้ไขได้อย่างไร

รายละเอียด:

ระบบไคลเอนต์

  • Arch Linux x64
  • การเข้ารหัส UTF-8

ระบบ VPS

  • เซิร์ฟเวอร์ Ubuntu 10.04
  • ใช้การเข้ารหัสที่ไม่รู้จัก ฉันจะหาสิ่งนี้ได้อย่างไร (ฉันต้องดูใน /etc/rc.conf เพื่อหา Arch)

คำตอบ:


19

การรันlocaleคำสั่งจะให้ข้อมูลเกี่ยวกับการตั้งค่าภาษาของคุณ การเข้ารหัสตัวอักษรจะได้รับจากการLC_CTYPEตั้งค่า

ภายใต้อูบุนตู, /etc/default/localeการตั้งค่าภาษาเริ่มต้นจะได้รับใน คุณสามารถเปลี่ยนการเข้ารหัสตัวอักษรโดยการตั้งค่าLC_CTYPEใน~/.profileVPS ของคุณเช่น

export LC_CTYPE=en_US.UTF-8

คุณจะต้องตรวจสอบให้แน่ใจว่ามีen_US.UTF-8สถานที่ให้บริการ Ubuntu สร้างข้อมูลตำแหน่งที่ตั้งสำหรับสถานที่ที่ขอเท่านั้น ตำแหน่งที่ตั้งภาษาอังกฤษทั้งหมดควรพร้อมใช้งานถ้าคุณมีการlanguage-pack-en-baseติดตั้งแพคเกจ คุณสามารถขอรุ่นด้วยตนเองได้

sudo locale-gen en

คุณยังสามารถเพิ่มรายการไปยัง/var/lib/locales/supported.d/localเพื่อให้แน่ใจว่ามีการติดตั้งสถานที่เฉพาะ (เช่นเพิ่มบรรทัดen_US.UTF-8 UTF-8)


4

actally ค่าที่กำหนดใน LC_CTYPE เป็นสถานที่เกิดเหตุชื่อ มันเป็นธรรมเนียม แต่ไม่จำเป็นต้องให้การเข้ารหัสชุดอักขระอยู่ในชื่อ

แต่ถ้าคุณต้องการทราบแน่นอน charset แล้วคำสั่งคือ 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"

(โปรดทราบว่าชุดอักขระไม่ปรากฏในค่า LC_TYPE ด้านบน)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.