การติดตั้งภาษาไทยใน Command shell ของวินโดว์ 7

ภาษาไทยที่พิมพ์หรือแสดงผลบนหน้าจอของ Command shell จะเห็นเป็นกรอบสี่เหลี่ยม ดังรูปข้างล่างนี้ ถึงแม้จะเปลี่ยนฟอนต์เป็นแบบอื่นแล้วก็ตาม ยังไม่สามารถแสดงฟอนต์ภาษาไทยได้เลย


                การตั้งค่ากำหนดให้ Command shell แสดงผลภาษาไทยได้นั้น ต้องไปแก้ไขระดับ registry ของวินโดว์ ก่อนลงมือทำ ควรสำรอง registry ปัจจุบันไว้ก่อน หากมีปัญหาขัดข้องเกิดขึ้นจะได้ import รีจิสตรีที่สำรองไว้นี้มาใช้ดังเดิม

สำรอง registry

การสำรองเก็บไว้ทำได้ดังนี้
  • กดปุ่ม windows + R พิมพ์คำว่า  regedit
  • คลิก OK จะมีหน้าต่างของโปรแกรม registry editor  ผุดขึ้นมา  คลิกที่เมนู  File >> Export..
  • ใส่ชื่อไฟล์ที่จะเก็บรีจิสตรีสำรองนี้เป็น backupRegistry.reg   เลือกหัวข้อ All ด้วย มิฉะนั้นการสำรองไฟล์อาจสำรองไม่ครบทั้งหมด คลิกปุ่ม save รอประมาณ 2-3 นาที จะได้ไฟล์สำรองเก็บไว้ในโฟลเดอร์ Documents

ติดตั้้งภาษาไทยให้ Command Shell

  1. ติดตั้งฟอนต์ที่สามารถแสดงผลภาษาไทย ในที่นี้จะใช้  Courier MonoThai  ซึ่งฟอนต์ชนิด Fixed pitch font แต่ละตัวอักษรจะมีช่องไฟเป็นระยะเท่า ๆ กันเสมอ
    • กดปุ่ม windows + r  พิมพ์คำว่า fonts (มี s ต่อท้ายด้วย)
    • ติดตั้งฟอนต์ Courier Mono โดยนำไฟล์ courmon.ttf มาใส่ในโฟลเดอร์ fonts ที่เปิดไว้นี้ วินโดว์จะทำการติดตั้งฟอนต์ให้อัตโนมัติ
  2. แกไขรีจิสตรี โดยใช้ registry editor ดังนี้
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\Nls 
    ให้เพิ่มข้อมูลชนิด String ชื่อ "0000041e" โดยที่ไม่ต้องใส่ค่าอะไรลงไป


  3. แก้ไขรีจิสตรี ทำต่อเนื่องมาจากขั้นที่ 2
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont 
    ให้เพิ่มข้อมูลชนิด String ชื่อ "874" มีข้อมูลภายในคือ "Courier MonoThai" เปลี่ยนค่าdefault ให้เป็น "Courier MonoThai" ด้วย
  4. แก้ไขรีจิสตรี
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ 
    เพิ่ม key “MS-DOS Emulation”  โดยมี attribute เป็น  default (ข้อมูลชนิด String) และ DisplayParams (ข้อมูลชนิด Binary)  value ของ attribute ทั้งสอง มีค่าดังรูป
  5. "DisplayParams"=hex:40,01,00,00,f0,00,00,00,00,04,00,00,00,03,00,00,60,00,00,\

    00,60,00,00,00,24,00,00,00,24,00,00,00,10,00,00,00,4c,00,75,00,63,00,69,00,\
    64,00,61,00,20,00,43,00,6f,00,6e,00,73,00,6f,00,6c,00,65,00,00,00,12,00,91,\
    ad,f5,77,e0,00,12,00,b0,e2,3e,77,74,23,dd,77,a8,f8,ca,01,ba,6d,d4,77,ec,6d,\
    d4,77,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,d8,f8,ca,01,15,e4,4a,\
    77,01,00,00,80,b0,e2,3e,77,00,00,00,00,19,00,02,00,d4,f8,ca,01,a4,03,00,00,\
    00,00,00,00,20,b4,5c,77,89,e4,4a,77,01,00,00,80,20,b4,5c,77
    ,
    ที่ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\MS-DOS Emulation\Font สร้าง key ชื่อ Font  ชนิดข้อมูลแบบ String โดยมีค่าเป็น Courier Mono Thai
  6. แก้ไขรีจิสตรี HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout\DosKeybCodes ให้เพิ่มข้อมูลชนิด String ชื่อต่อไปนี้
    "0000041E" ข้อมูลมีค่าเป็น "th"

    "0001041E" มีค่าเป็น "th"
    "0002041E" มีค่าเป็น "th"
    "0003041E" มีค่าเป็น "th"

    เป็นอันสิ้นสุดการแก้ไขรีจิสตรี จากนั้นให้ restart วินโดว์ใหม่ เพื่อให้รับรู้ค่าของรีจิสตรีที่มีการเพิ่มค่าหรือเปลี่ยนแปลงไป
  7. เมื่อรีสตาร์ตเครื่องแล้ว ต้องไปกำหนด properties ของ Command Shell  ดังนี้



เส้นทางลัด

การทำตามขั้นตอนทั้ง 6 ขั้น อาจจะลำบากตอนพิมพ์ข้อความ โอกาสที่จะเกิดข้อผิดพลาดเป็นไปได้มาก จึงมีวิธีลัดดังนี้
  • ดาวน์โหลด zip file ชื่อ ThaiLang4CMD.zip มาเก็บไว้ในเครื่องคอมพิวเตอร์ของเรา จากนั้นแตกไฟล์จะได้ไฟล์ 2 ไฟล์คือ Courmon.ttf ซึ่งเป็นฟอนต์ ชนิด True Type Font สามารถแสดงผลภาษาไทยที่ให้ระยะห่างระหว่างตัวอักษรแต่ละตัวเท่า ๆ กัน อีกไฟล์ หนึ่งคือ ThaiLangInDOS.reg เป็นไฟล์รีจิสทรี สำเร็จรูป
  • ติดตั้งฟอนต์ Courier Mono Thai ตามขั้นตอนที่ 1 ของหัวข้อติดตั้งภาษาไทยให้แก่ Command Shell
  • ดับเบิลคลิกที่ไฟล์ ThaiLangInDOS.reg  จะเป็นการนำรีจิสตรี ตั้งแต่ขั้นที่ 2 ถึงขั้นที่ 5 import เข้าไปไว้ในระบบรีจิสตรี โดยที่เราไม่ต้องพิมพ์ให้เสียเวลา
  • รีสตาร์ต Windows
  • เข้าไปกำหนด properties ของ Command shell ตามขั้นตอนที่ 6  ถ้าไม่มีข้อผิดพลาด จะเห็น Command shell แสดงภาษาไทยได้ตามรูป

การแสดงผลภาษาไทยที่เข้ารหัสแบบ UTF-8

ถึงแม้จะพิมพ์ภาษาไทยที่ตัวอักษร สระ และวรรณยุกต์ได้ถูกต้องทุกประการ แต่เมื่อนำเอกสารภาษาไทยที่เข้ารหัสแบบ UTF-8  พบว่าจะแสดงตัวอักษรออกมาแบบอ่านแล้วไม่รู้เรื่อง

ภาพบนคือข้อความในไฟล์ TestThai.txt  โดยใช้ภาษาไทยที่เข้ารหัสแบบ UTF-8  เมื่อใช้คำสั่ง Type พิมพ์ข้อความใน Command shell พบว่าแสดงผลภาษาไทยผิดเพี้ยนไปจากข้อความที่แท้จริง

            เมื่อใช้คำสั่ง chcp ตรวจสอบการเข้ารหัสภาษาไทยของ Command shell พบว่ามีการเข้ารหัสหรือใช้ codepage แบบ 874 หรือ windows-874 ดังรูป



ในการแสดงผลภาษาไทยที่เข้ารหัสแบบ UTF-8 ต้องใช้คำสั่งเปลี่ยนการเข้ารหัสของ Command shell เสียก่อนดังนี้


Codepage หรือการเข้ารหัสแบบ 65001 เป็นการเข้ารหัสแบบ UTF-8  เมื่อใช้คำสั่ง type พิมพ์ไฟล์ testThai.txt  จะได้ภาษาไทยที่ถูกต้อง

อย่างไรก็ตามการเปลี่ยนรหัสภาษาเป็น 65001 มีปัญหากับโปรแกรมที่ทำงานภายใต้ command shell เช่น myslq ที่เป็น client program ไม่สามารถรับข้อมูลภาษาไทยในกรณีที่เข้ารหัสแบบ UTF-8 ได้ แต่สามารถรับข้อมูลภาษาไทยที่เป็นรหัส TIS-620 เป็นต้น


REFERENCES & RESOURCES



 
Yahoo bot last visit powered by MyPagerank.Net Msn bot last visit powered by MyPagerank.Net