PlusMagi's Blog By Pitt Phunsanit Design,macOS,Security MacOs: ตั้ง terminal ให้ใช้ภาษาไทยได้

MacOs: ตั้ง terminal ให้ใช้ภาษาไทยได้

ตอนนี้ mac ternimal แสดงภาษาไทยเป็น <ffffffff> แต่บางครั้งต้องใช้ภาษาไทย หรือ copy code มาจากที่อื่นที่มันติด comment ภาษาไทยมาด้วย ผลคือคำสั่งพัง สาเหตุส่วนใหญ่มาจากการที่ Terminal ไม่ได้ถูกตั้งค่าให้ใช้ Unicode ทำให้มันพยายามแสดงรหัสฐานสิบหกแทนตัวอักษรไทย


ตั้งค่า Encoding เป็น UTF-8

  1. ไปที่แถบเมนู Terminal > Settings… ( หรือ Preferences ) คลิกที่แท็บ Profiles และเลือกโปรไฟล์ที่คุณใช้งานอยู่ ( แถบด้านซ้าย )คลิกที่แท็บย่อย Advanced ทางด้านขวาในส่วนของ International
  2. ที่หัวข้อ Text encoding: ให้เลือกเป็น Unicode (UTF-8)
  3. ติ๊กถูกที่ช่อง Set locale environment variables on startup เพื่อให้ระบบตั้งค่าภาษาโดยอัตโนมัติ

เปลี่ยนฟอนต์ให้รองรับภาษาไทย

หาก Encoding ถูกต้องแล้วแต่ยังแสดงผลเพี้ยน อาจเป็นเพราะฟอนต์ที่ใช้อยู่ไม่มีตัวอักษรไทย

  1. ในหน้า Settings > Profiles > แท็บ Text
  2. ในส่วนของ Font: คลิกปุ่ม Change
  3. เลือกฟอนต์ที่รองรับภาษาไทย เช่น Ayuthaya, Thonburi, Krungthep หรือฟอนต์มาตรฐานอย่าง Menlo / Monaco ( ซึ่งปกติจะรองรับภาษาไทยพื้นฐานได้ )

แก้ปัญหาแสดงผล ( Escape non-ASCII )

  1. ในหน้า Settings > Profiles > แท็บ Advanced
  2. มองหาหัวข้อ Input
  3. เอาเครื่องหมายถูกออก ที่ช่อง “Escape non-ASCII input with Control-V”
  4. ตรวจสอบในหัวข้อ International ด้านล่างด้วยว่า Text encoding เป็น Unicode (UTF-8) และติ๊กถูกที่ Set locale environment variables on startup แล้วหรือยัง

จริง ๆ Escape non-ASCII input with Control-V มันเป็นการป้องกันพวกที่ใช้ ai หรือ copy จากเว็บมาโดยที่ไม่รู้ว่าเค้าใส่อักษรพิเศษไว้ ทำให้เครื่องเราไม่ปลอดภัยได้ แต่ถ้าจะใช้ภาษาไทยจริง ๆ ใช้วิธีอ่านคำสั่งก่อนทำอะไรดีกว่า


คำสั่งพิเศษสำหรับ zsh ใน macOS

  • เพื่อให้ zsh รองรับการรวมสระและวรรณยุกต์ไทย ( Combining Characters ) ได้ดีขึ้น ให้พิมพ์คำสั่งนี้
    setopt combiningchars
  • ปิดการ “มองภาษาไทยเป็นไฟล์” ( zsh: no matches found )
    unsetopt nomatch

การทดสอบ

จริง ๆ ไม่ต้องอธิบายก็ได้ว่าเทสยังไง แต่จะบอกว่าคุณต้อง ปิด termina แล้วเปิด termina ใหม่ก่อน จากนั้นลองใช้ภาษาไทยดู


อ่านเพิ่มเติม