แก้ปัญหาโพสชื่อลิงก์ภาษาไทยแล้วเป็นตัวเลข+อักษรอังกฤษ

   
     

         หลายคนคงเคยเจอปัญหาว่าเวลาเราทำการโพสชื่อลิงก์ซึ่งเป็นภาษาไทยในเวบบอร์ดต่างๆแล้วแทนที่มันจะแสดงเป็นชื่อภาษาไทยเหมือนต้นฉบับที่เราก็อปปี้มา ดันแสดงเป็นชุดตัวเลข+ตัวอักษรอังกฤษแทน เช่นผมก็อปปี้  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://meyerweb.com/eric/tools/dencoder คลิกขวาในช่องสีม่วงแล้ว Paste เจ้าชื่อลิงค์ที่มีปัญหาลงไปแล้วเลือก Decode มันจะทำการแปลงชื่อลิงค์ในรูปแบบเลขฐาน 16 ที่อ่านไม่ออกให้เป็นภาษาไทย และที่สำคัญคือถ้าเราทำการก็อปปี้ชื่อลิงก์จากช่องนี้ไปโพสที่อื่นมันก็จะยังเป็นภาษาไทย ไม่มีการเปลี่ยนกลับเป็นเลขฐาน 16 อีกแล้วครับ



       *** ข้อสังเกตก่อนจบบทความคือถ้าเราเข้าเว็บด้วยชื่อลิงก์ภาษาไทยในรูปแบบเลขฐาน 16 ผ่าน Google Chrome หรือ Firefox จะเห็นได้ว่าในช่อง Address มันมีการแปลงกลับเป็นภาษาไทยให้ด้วยเช่นกัน มีเพียง IE เท่านั้นที่ยังแสดงเป็นลักษณะของ เลขฐาน 16(ยกเว้นว่าผ่านการแปลงด้วยเว็บข้างต้นมาแล้ว) 

Chrome



IE


                    แต่ถึงแม้ว่า Chrome และ Firefox จะแปลงเป็นไทยให้ ถ้าเราใช้วิธีการก็อปปี้จากช่อง Address ไปวางที่อื่นก็จะยังเจอปัญหาโดนแปลงกลับเป็น เลขฐาน 16 เหมือนเดิมครับ เพราะมันแค่การแสดงผลเท่านั้นไม่ใช่การ Decode เหมือนทำผ่านหน้าเว็บดังกล่าวนั่นเองครับ 

ความคิดเห็น

  1. เคาะเว้นวรรคหน้า https:// แล้วค่อย copy ก็ได้แล้วครับ

    ตอบลบ
    คำตอบ
    1. ขอบคุณที่ช่วยแบ่งปันความรู้ครับ ความรู้ใหม่สำหรับผมเลย สะดวกกว่าจริงๆด้วย

      ลบ

แสดงความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

Gmail ส่งผิดดึงกลับได้

แก้ปัญหาสระและวรรณยุกต์ใน Word ขึ้นเป็นสี หรือ สระและวรรณยุกต์หายไป

แก้ปัญหา Windows 8 และ 8.1 กับ Mouse Keyboard รุ่นเก่า(PS/2)