แก้ปัญหาโพสชื่อลิงก์ภาษาไทยแล้วเป็นตัวเลข+อักษรอังกฤษ
หลายคนคงเคยเจอปัญหาว่าเวลาเราทำการโพสชื่อลิงก์ซึ่งเป็นภาษาไทยในเวบบอร์ดต่างๆแล้วแทนที่มันจะแสดงเป็นชื่อภาษาไทยเหมือนต้นฉบับที่เราก็อปปี้มา ดันแสดงเป็นชุดตัวเลข+ตัวอักษรอังกฤษแทน เช่นผมก็อปปี้ http://www.dkdc-ultra.com/ทดสอบชื่อภาษาไทย.html มาวางลงในเว็บบอร์ด มันจะกลายเป็น http://www.dkdc-ultra.com/%E0%B8%97%E0%B8%94%E0%B8%AA%E0%B8%AD%E0%B8%9A%E0%B8%8A%E0%B8%B7%E0%B9%88%E0%B8%AD%E0%B8%A0%E0%B8%B2%E0%B8%A9%E0%B8%B2%E0%B9%84%E0%B8%97%E0%B8%A2.html ทันที ซึ่งนอกจากมันจะอ่านไม่รู้เรื่องแล้ว โดยความเห็นส่วนตัวผม ผมมองว่าบางครั้งมันดูน่าหวาดระแวงไปหน่อย ทำให้เราไม่กล้าที่จะกดเข้าไปอ่านเพราะมันดูเหมือนเป็นรหัสอะไรก็ไม่ทราบ ดีไม่ดีอาจจะเป็นลิงก์ไวรัสหรือลิงก์ลวงก็เป็นได้ ดังนั้นในบทความนี้เราจะมาดูวิธีการแก้ไขกันครับ
ก่อนอื่นผมขออธิบายที่มาของปัญหานี้แบบคร่าวๆ(เพราะใช้การจิ้มดีดเอาเลยไม่อยากพิมพ์มาก) คือแรกเริ่มเดิมทีนั้นภาษาไทย(รวมทั้งอังกฤษและอื่นๆด้วย)ในระบบคอมพิวเตอร์นั้นเค้าจะใช้วิธีการแทนด้วยรหัสแอสกี(Ascii Code) โดยในรหัสดังกล่าวนั้น ตัว กอไก่ จะแทนด้วยตัวเลข 161(ฐาน 10) ไปจนถึง ฮ ซึ่งแทนด้วย 206(ฐาน 10) ตามด้วยสระและวรรณยุกต์(ตั้งแต่ 207 เป็นต้นไป)
เพื่อพิสูจน์ว่าเป็นจริงตามนั้น(หลายคนคงเคยเล่นแล้ว) ให้ทำการเปิดโปรแกรม Notepad ขึ้นมา จากนั้นกดปุ่ม Alt ค้างไว้แล้วกดตัวเลข 161(จากปุ่ม NumLock) จะเห็นว่ามันมีการแสดงตัวอักษร กอไก่ขึ้นมา หรือใครอยากลองตัวอื่นๆก็เปลี่ยนตัวเลขตามสบายเลยครับ
*** จับภาพมาจาก http://www.ascii.ca/cp874.htm ***
แต่ข้อจำกัดของรหัสแอสกีคือมันสามารถใช้อ้างอิงถึงตัวอักษรได้แค่ 128 ตัว(ในยุคแรกๆ) แม้ว่าในช่วงหลังจะมีการขยายออกเป็น 256 ตัวอักษรแล้วมันก็ยังไม่พอที่จะใช้อ้างอิงถึงตัวอักษรทั้งหมดในโลกนี้ได้ โดยเฉพาะตัวอักษรจีนซึ่งมีจำนวนอักษรเป็นหลักหมื่นถึงแม้จะนิยมใช้จริงแค่หลักพันก็เถอะ มันก็เกิน 256 อยู่ดี (ไม่รู้ว่าเค้ามีท่องเหมือนเราท่อง ก-ฮ รึปล่าวถ้ามีผมว่าคงลำบากน่าดู ขนาดของเรา 44 ตัวยังท่องกันไม่ค่อยจบเลย)
จริงๆไม่ถึง 256 ด้วยซ้ำเพราะส่วนหนึ่งต้องแบ่งให้ภาษาอังกฤษเค้าด้วยทั้งตัวเล็กและตัวใหญ่รวมทั้งเครื่องหมายอื่นๆอีก(ภาษาอังกฤษตัว A ใหญ่เริ่มที่ 65 ครับ) ก็เค้าเป็นคนคิดคอมพิวเตอร์ขึ้นมานี่ นั่นคือเหตุผลว่าทำไม กอไก่ถึงเริ่มที่ 161 ไม่เริ่มที่ 1 ใครสนใจรายละเอียดลึกๆก็ Google เลยครับข้อมูลมีเยอะแยะ
จึงมีการคิดรหัสใหม่ขึ้นมาใช้แทนรหัสแอสกี เรียกว่ารหัสยูนิโคด ซึ่งสามารถแทนตัวอักษรได้มากถึง 65536 ตัว และเจ้ายูนิโคดที่ว่านี้ก็ยังมีหลายรูปแบบอีกนะครับ แต่ที่เป็นมาตรฐานนิยมจะเป็นแบบ UTF-8 (รายละเอียดก็ Google เหมือนเดิมครับ) ซึ่งรูปแบบการแทนตัวอักษร กอไก่ ในแบบ UTF-8 จะเป็นตัวเลข 3 ชุด(ในฐาน 16) คือ E0 B8 81 พอจะนึกออกแล้วใช่มั้ยครับว่าไอ้ชื่อลิงก์ภาษาไทยที่มีปัญหาก็คือเจ้าตัวเลขนี้ล่ะครับเพียงแต่ใช้การแยกแต่ละชุดด้วย % เช่นถ้าเป็นกอไก่ก็จะได้เป็น E0%B8%81 นั่นเองครับ
*** จับภาพมาจาก http://www.utf8-chartable.de/unicode-utf8-table.pl?start=3584&number=128&utf8=0x ***
เมื่อพอจะเข้าใจที่มาของปัญหากันแล้วว่าเจ้าตัวอักษรและตัวเลขที่คั่นด้วย % นั้นมาจากไหน คราวนี้เรามาดูวิธีแก้ปัญหากันครับ ให้เราเข้าไปที่ http://meyerweb.com/eric/tools/dencoder คลิกขวาในช่องสีม่วงแล้ว Paste เจ้าชื่อลิงค์ที่มีปัญหาลงไปแล้วเลือก Decode มันจะทำการแปลงชื่อลิงค์ในรูปแบบเลขฐาน 16 ที่อ่านไม่ออกให้เป็นภาษาไทย และที่สำคัญคือถ้าเราทำการก็อปปี้ชื่อลิงก์จากช่องนี้ไปโพสที่อื่นมันก็จะยังเป็นภาษาไทย ไม่มีการเปลี่ยนกลับเป็นเลขฐาน 16 อีกแล้วครับ
*** ข้อสังเกตก่อนจบบทความคือถ้าเราเข้าเว็บด้วยชื่อลิงก์ภาษาไทยในรูปแบบเลขฐาน 16 ผ่าน Google Chrome หรือ Firefox จะเห็นได้ว่าในช่อง Address มันมีการแปลงกลับเป็นภาษาไทยให้ด้วยเช่นกัน มีเพียง IE เท่านั้นที่ยังแสดงเป็นลักษณะของ เลขฐาน 16(ยกเว้นว่าผ่านการแปลงด้วยเว็บข้างต้นมาแล้ว)
![]() |
Chrome |
![]() |
IE |
แต่ถึงแม้ว่า Chrome และ Firefox จะแปลงเป็นไทยให้ ถ้าเราใช้วิธีการก็อปปี้จากช่อง Address ไปวางที่อื่นก็จะยังเจอปัญหาโดนแปลงกลับเป็น เลขฐาน 16 เหมือนเดิมครับ เพราะมันแค่การแสดงผลเท่านั้นไม่ใช่การ Decode เหมือนทำผ่านหน้าเว็บดังกล่าวนั่นเองครับ
เคาะเว้นวรรคหน้า https:// แล้วค่อย copy ก็ได้แล้วครับ
ตอบลบขอบคุณที่ช่วยแบ่งปันความรู้ครับ ความรู้ใหม่สำหรับผมเลย สะดวกกว่าจริงๆด้วย
ลบ