ฉันพยายามที่จะเรียนรู้ว่า$LANG
ตัวแปรทำงานอย่างไรกับ gnome-terminal (และตัวเลือกการตั้งค่าการเข้ารหัสอักขระ) ฉันใช้ iso8859-1 (latin1) เป็นตัวละครหลักของฉันและชื่อไฟล์ทั้งหมดของฉันถูกเข้ารหัสเช่นนี้
สำหรับการทดสอบต่อไปนี้ฉันจะทำls -l
ไดเรกทอรีที่มีอักขระเน้นเสียงภาษาสเปนในชื่อไฟล์ของพวกเขา:
กรณี # 1:
- gnome-terminal ที่กำหนดค่าไว้สำหรับ ISO-8859-1
LANG
ตั้งค่าเป็น "en_US-iso8859-1"- ผลลัพธ์: ฉันเห็นไฟล์ทั้งหมดอย่างถูกต้อง
กรณีที่ 2:
- gnome-terminal กำหนดค่าสำหรับ UTF-8
LANG
ตั้งค่าเป็น "en_US-iso8859-1"- ผลลัพธ์: ฉันเห็นอักขระขยะสำหรับอักขระภาษาสเปนทั้งหมด สิ่งนี้คาดว่าจะเกิดขึ้นเมื่อฉันเปลี่ยนการเข้ารหัสอักขระสำหรับเทอร์มินัล
กรณี # 3:
- gnome-terminal ที่กำหนดค่าไว้สำหรับ ISO-8859-1
LANG
ตั้งค่าเป็น "en_US-UTF-8"- ผลลัพธ์: ฉันเห็นอักขระขยะสำหรับอักขระภาษาสเปนทั้งหมด
ทำไมในกรณีนี้ฉันเห็นตัวอักษรที่อ่านไม่ออก ผลลัพธ์ของlsไม่ควรส่งชื่อไฟล์ไปยัง gnome-terminal อย่างที่เป็นหรือ และเนื่องจาก gnome-terminal ได้รับการกำหนดค่าสำหรับ ISO-8859-1 ฉันจึงคาดว่าพวกมันจะถูกต้อง
สักครู่ฉันคิดว่าบางทีบางที bash กำลังพิจารณา$LANG
ตัวแปรของฉันและทำการแปลงบางอย่าง จากนั้นฉันเปลี่ยนเทอร์มินัลเป็น UTF-8 แต่ฉันยังไม่เห็นอักขระ ฉันได้ส่งออก ls ไปยัง xxd และทำให้ฉันประหลาดใจฉันยังเห็นไฟล์ที่เข้ารหัสตามที่เป็นอยู่: ISO-8859-1
ในการสรุป: หากรายชื่อของฉันมีอักขระ ISO-8859-1 และตัวจำลองเทอร์มินัลของฉันได้รับการกำหนดค่าสำหรับการเข้ารหัสอักขระเดียวกัน: ใครกำลังทำการแปลงเมื่อLANG
ตั้งค่าไว้เป็นอย่างอื่น
ขอบคุณสำหรับความช่วยเหลือที่คุณสามารถให้ได้
Craconia