วันอาทิตย์ที่ 3 มกราคม พ.ศ. 2559

Setting Thai Language in Windows cmd


 

การตั้งค่า cmd ให้พิมพ์ และแสดงผลภาษาไทย


Setting Thai Language in Windows cmd
การใช้ cmd, diskpart, Windows PowerShell ในแบบ Default (ค่าเริ่มต้น) ที่วินโดว์กำหนดมาให้นั้น ไม่สามารถพิมพ์ และแสดงผลภาษาไทยได้ ซึ่งโดยทั่วไปก็ไม่ได้มีปัญหาอะไร แต่ถ้าจะให้ใช้งานโปรแกรมทั้งสามได้ดี 100% กับคอมพิวเตอร์ของคนไทย ก็ต้องมีปรับแต่ง/ติดตั้ง font ไทยที่ทำให้โปรแกรมสามารถพิมพ์/แสดงผล ภาษาไทยได้ก่อน

Note: การตั้งค่า cmd ให้สามารถรองรับการอ่าน และพิมพ์ภาษาไทยได้นั้น คุณอาจจะได้ตั้งค่าที่มีขั้นตอนมาก/น้อยไม่เหมือนกัน ทั้งนี้ก็ขึ้นอยู่กับ สภาพแวดล้อม และรุ่นของ Windows ด้วย



Install Thai font to display in cmd




A. วิธีทำ (ดูภาพประกอบตามลูกศร และหมายเลข)





จากนั้น Extract file.zip (ด้วยวิธีการใดก็ได้) คุณก็จะได้ไฟล์ Courier MonoThai .ttf และ cmd-setting-thai-L.reg ตามรูป



Install Thai font to display in cmd










2. คลิกขวาที่ Courier MonoThai.ttf > Install
หรือจะก็อปปี้ Courier MonoThai.ttf ไปวางใน C:\Windows\Fonts ก็ได้ (กด Windows+r > พิมพ์ fonts > OK)



Setting Thai font in cmd Properties




เปิด cmd: 
กด Windows + r keys พิมพ์ cmd > OK.






3. คลิก cmd icon (หรือคลิกขวาบน Title bar ของโปรแกรมก็ได้) > Properties > Font > เลือกเป็นCourier MonoThai > OK


Note:

* ถ้า cmd ของคุณยังไม่มีตัวเลือก Courier MonoThai ให้คุณ Sign out หรือ Restart จากนั้นให้เข้ามาดูการตั้งค่าใน cmd Properties อีกครั้ง

** หลังจากที่คุณ Restart เครื่องแล้ว cmd ของคุณยังไม่มีตัวเลือก Courier MonoThai ให้คุณ Import Reg file ตามข้อ 4. ข้างล่าง


Tired Emotionในการตั้งค่าภาษาไทยใน cmd พบว่าใน Windows 7, 8, 8.1 
จะมีขั้นตอน และให้ผลลัพธ์ ไม่เหมือนกัน ดังนี้

 Windows 8.1 เมื่อนำไฟล์ Courier MonoThai.ttf ไปวางไว้ใน Fonts Folder, ระบบWindows จะสร้างข้อมูลต่างๆใน Registry ให้โดยอัตโนมัติ ซึ่งมันก็ส่งผลให้เราสามารถตั้งค่า Font ภาษาไทยใน cmd ได้เลย

 Windows 7, 8 เมื่อเข้าไปตั้งค่าใน cmd (ข้อ 3.) ปรากฏว่า ยังไม่มีฟอนท์ Courier MonoThai เป็นตัวเลือก ซึ่งถ้า Windows ของคุณเป็นแบบนี้, คุณต้องเข้าไปปรับแต่ง Registry เพิ่มเติมครับ แต่การปรับแต่ง Reg แบบManual นั้นต้องสร้าง Key, Value, Data กับหลาย Key ทำให้ยุ่งยากเสียเวลา (มีภาพตัวอย่างของ Registry อยู่ที่ข้อ B.) ซึ่งในที่นี้ ผมจึงแนะนำวิธีการ Import Reg file แทน


reg file
4. ดับเบิลคลิกที่ cmd-setting-thai-L.reg > Yes > Yes
- เมื่อ Import Reg เสร็จแล้วให้คุณเข้าไปตั้งค่าใน cmd ตามข้อ 3. อีกครั้ง




Display Thai lanquage on cmd


☺ ทดสอบพิมพ์ภาษาไทยก็จะเป็นดังรูป












Emotionถ้าคุณไม่ต้องการอะไรที่มากไปกว่าการให้ cmd อ่าน และแสดงผลดภาษาไทยได้ 
บทความก็จบแต่เพียงเท่านี้ ต่อไปเป็นรายละเอียดปลีกย่อยที่เกี่ยวข้อง














B. ภาพใน Registry Editor

เมื่อคุณ Import Reg file ตามข้อ 4. ถ้าเปิดดูจากข้างในโปรแกรม regedit ก็จะมี Key, Value, Data ที่ถูกสร้างขึ้นมาใหม่ตามรูป * ที่ขีดเส้นใต้สีเขียวคือ Key, Value, Data ที่ถูกสร้างขึ้นมาใหม่
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\MS-DOS Emulation]"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,7 Edit reg to setting thai language in cmd




C. รายละเอียดอื่นๆที่เกี่ยวข้อง


1. ถึงแม้การตั้งค่าดังกล่าวจะทำให้ cmd (รวมไปถึง ตำแหน่ง เคอร์เบอร์เพี้ยน เมื่อพิมพ์ภาษาไทยใน cmdDiskpart, Windows PowerShell ด้วย) สามารถแสดงผล และพิมพ์ภาษาไทยได้ แต่ในการใช้งานจริง จะพบว่าถ้าพิมพ์ข้อความที่มี "สระ, วรรณยุกต์" ที่วางอยู่ด้านบนหรือ ด้านล่าง ของพยัญชนะ
(เช่น สระอี, สระอุ, ไม้โท, การันต์) Cursor จะกระพริบห่างจากตำแหน่งไปตามจำนวน "สระ, วรรณยุกต์" ที่ใช้ด้วย ดูที่ภาพผมพิมพ์คำว่า สุดเพี้ยน ซึ่งมี สระ, วรรณยุกต์ ที่วางด้านบน/ล่าง 3ตัว, ตำแหน่งเคอร์เซอร์ก็จะอยู่ห่างออกไปอีก 3 ช่วงตัวอักษร
การแก้ไข: ผมแนะนำว่า ควรเขียนคำสั่งใน Notepad หรือโปรแกรมอื่นๆ จากนั้นนำมา Paste ใน cmd จะสะดวกกว่า
* ถ้าคุณไม่เข้าใจว่าต้องทำอย่างไร ก็ให้ดูตัวอย่างในบทความนี้ครับ
 
quick edit mode in cmd

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Courier font
2. Courier (เคอร์เรีย) เป็นชื่อ Font ที่นิยมกันมาก แบบหนึ่ง เริ่มมีการใช้ในระบบ Windows ตั้งแต่ Windows 3.1 ตัวอักษรทุกตัวไม่ว่าจะเปีน I หรือ W ล้วนแต่ใช้เนื้อที่เท่ากันทั้งหมค ความจริงใน Windows รุ่นหลัง 3.1 ก็มี Font ตระกูล Courier ติดตั้งมาให้อยู่แล้ว แต่สาเหตุที่เราต้องติดตั้ง Courier MonoThai เพิ่มเข้าไปก็เพราะว่าฟอนท์ชุด Courier New และ Courier Regular ที่ติดมากับวินโดว์นั้น มันไม่สามารถพิมพ์ภาษาไทยได้ครับ (ดูผิวเผินมันเหมือนจะพิมพ์ได้ แต่ความจริงในการพิมพ์ภาษาไทยด้วย Courier New และ Courier Regular นั้น Windows จะแทนที่ด้วย Font อื่นให้โดยอัตโนมัติ)

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
3. เรื่องของ Code Page กับการใช้งาน cmd (ดูภาพประกอบตามหมายเลข)
- ในขั้นตอนการติดตั้งวินโดว์ ถ้าเราเลือก Time and currency และ Keyboard or input method ให้เป็น "Thai..." ระบบวินโดว์ก็จะกำหนดให้คอมพิวเตอร์เครื่องนั้น ใช้มาตรฐานการเข้าระหัสอักษรเป็น 874 โดยอัตโนมัติ ซึ่งหมายเลข 874 ก็คือ ANSI Code page ของภาษาไทยครับ 
** ANSI (American National Standards Institute) สถาบันมาตราฐานแห่งชาติของสหรัฐอเมริกา


cmd Code page 874 (utf8)3.1 เราสามารถใช้ cmd ตรวจสอบ ANSI Code page ได้โดยการใช้คำสัง chcp (Change Code Page) แล้วกด Enter, cmd ก็จะโชว์ Code page ให้เห็นตามรูปตามรูป
การเข้าระหัสภาษาต่างๆตามมาตรฐานของ ANSI (แอนซี) นั้นจะมีระหัสที่แตกต่างกันออกไป หลายรูปแบบ เช่น
- ถ้าเป็น Windows ของชาวอเมริกันที่ไม่ได้ตั้งค่า Time and currency และกำหนด Keyboard or input method ให้เป็นภาษาที่สอง (ค่า Default) coed page ของวินโดว์ก็จะเป็น437 หรือ ถ้าเป็นวินโดว์ที่ใช้ Tine zone และติดตั้งภาษาไต้หวัน Code page ก็จะเป็น 20001, รัสเซีย=20866เป็นต้น, คุณสามารถอ่านรายละเอียดเรื่อง Code page ได้จาก 2ลิงค์นี้




คำสั่ง chcp จะใช้ในกรณีที่เราต้องการแสดงผล ภาษา หรือเอกสารที่เข้าระหัสอื่นที่ไม่ใช่ระหัสเดียวกับของระบบ (คอมพิวเตอร์ของผมคือ 874) เช่น...

3.2 ผมใช้คำสั่ง type ตามด้วยชื่อไฟล์.txt ที่เข้าระหัสเอกสารแบบ UTF 8, cmd ก็จะแสดงผลออกมาเป็นภาษาต่างดาวตามรูป

3.3 วิธีแก้ปัญหาก็ทำได้โดยเปลี่ยนค่า Code page ของ cmd ให้ตรงกับ UTF 8 นั่นก็คือ หมายเลข 65001 (พิมพ์ chcp 65001 > กด Enter)

3.4 หลังจากที่เปลี่ยน Code page เป็น 65001 แล้วผมทดลองใช้คำสั่ง type เพื่อแสดงผลภาษาไทยที่อยู่ในไฟล์ thai-language-utf8.txt อีกครั้ง การแสดงผลภาษาไทยก็อ่านได้ตามปกติ


*** การเปลี่ยน Code page โดยใช้คำสั่ง chcp เป็นการเปลี่ยน แบบชั่วคราวครับ, เมื่อคุณปิด cmd แล้วเปิดขึ้นมาใหม่ Code page ของ cmd ก็จะกลับไปเป็น 874 เหมือนเดิม (หรือถ้าเป็นคอมพิวเตอร์ที่เป็นภาษาอื่นมันก็จะกลับไปใช้ Code page ของภาษานั้นๆ)



/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



4. เราสามารถใช้คำสั่ง chcp เพื่อให้ cmd แสดงผลภาษาท้องถิ่น, และเอกสารที่เข้าระหัสที่ต่างออกไปได้ครับ แต่มีข้อแม้อยู่ว่า Font ที่มีอยู่ใน cmd จะต้องรองรับภาษานั้นๆได้ด้วย

ตัวอย่าง

การใช้ cmd ในคอมพิวเตอร์ภาษาอังกฤษที่ไม่ได้ติดตั้งภาษาท้องถิ่นใดๆ และใช้ Time zone เป็น English (United States) หรือวินโดว์ของชาวอเมริกัน

cmd Eng(USA) Language, and Region
4.1 ถ้าพิมพ์ chcp, cmd ก็จะโชว์ Code page เป็น 437


4.2 ทดลองเปลี่ยน Code page เป็น 874 (เข้าระหัสแบบ Thai Windows) จากนั้นใช้คำสั่ง type ตามด้วยชื่อไฟล์ thai-l.txt > Enter, cmd ก็จะแสดงผลภาษาไทยเป็นภาษาต่างดาวตามรูป
cmd Eng(USA) Language, and Region 4.3 ผมปิด cmd จากนั้นติดตั้ง font Courier MonoThai และ Import Reg file จากนั้นเข้าไปตั้งค่า Fontใน cmd Properties อีกครั้ง

4.4 ทดสอบแสดงผลภาษาไทยอีกครั้ง โดยไม่เปลี่ยน Code page ผลลัพธ์ก็คือ...ยังอ่านไม่รู้เรื่อง, เป็นภาษาต่างดาวเหมือนเดิม

Display Thai langquage on cmd (windows-USA)

4.5 วิธีการที่ถูกต้องก็คือ ต้องเปลี่ยน Code page ให้เป็นภาษาที่ตรงกับเอกสารก่อน, ในที่นี้คือ 874 (ภาษาไทย) จากนั้นถึงจะใช้คำสั่ง Type เพื่อแสดงผลภาษาไทยในเอกสาร ได้ไม่ผิดเพี้ยน




/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////








tom & jery funny animited.gif

คำถาม:

- ถ้าไม่ต้องการติดตั้ง Courier MonoThai แต่ต้องการตั้งค่าให้ cmd ใช้งานภาษาไทยได้ด้วยฟอนท์ TrueType ตัวอื่นที่มีอยู่แล้วในระบบ Windows เช่น Angsana, Cordia New, Tahoma, Microsoft Sans Serif ด้วยวิธีการแก้ไข Registry จะทำได้หรือไม่?....เป็นคำถามที่น่าสนใจนะครับ เอาไว้ถ้ามีเวลาผมก็อยากลองแก้ไขดูเหมือนกัน





Basic Windows cmd
- ทำความรู้จักกับ พื้นฐานของ MS DOS และ cmd
- จะใช้ cmd ให้ง่ายกว่าที่คิด ก็ต้องรู้จัก Options และ วิธีการตั้งค่าต่างๆของโปรแกรมกันก่อน
3. Keyboard Shortcut in cmd
- คีย์บอร์ดช็อตคัท อีกหนึ่งเครื่องมือที่ช่วยทุ่นแรงในการใช้ cmd ได้เป็นอย่างดี
- ตารางชุดคำสั่งพื้นฐาน พร้อมตัวอย่างประกอบการใช้งาน
- ใช้โปรแกรมที่คุณถนัดเขียนคำสั่ง DOS แทนการเขียนใน cmd
ซ่อน Drive โดยใช้ QuickEdit Mode ใน Diskpart





ไม่มีความคิดเห็น :