Nov 17 2008

แก้ไขภาษาไทยที่เป็นตัวยึกยือ

Category: .NETm3rLinEz @ 04:04

ก่อนอื่นขอแถลงไขคำว่าภาษาไทยยึกยือก่อน มันคืออะไรประมาณนี้ครับ

·´Êͺ¤ÃÑé§·Õè 1

จะเห็นได้ว่าตึวยึกยือพวกนี้อ่านไม่ออก แต่จริงๆแล้วมันเป็นภาษาไทยที่เป็นคำว่า "ทดสอบครั้งที่ 1"

ปัญหานี้มันเกิดจากเวลาเราเซฟไฟล์เป็น ANSI มันจะใช้พื้นที่ 1 byte ต่อการจัดเก็บอักขระ 1 ตัวครับ ดังนั้นภาษาอื่นๆนอกจากภาษาอังกฤษ (และตัวเลข + สัญลักษณ์บางส่วน) มันก็อาจจะแสดงผลไม่ถูกต้องถ้าเราไม่ได้กำหนด Codepage ที่ถูกต้องให้กับมัน

ถ้าเป็นใน C# เราอ่านเจ้าพวกยึกยือเข้ามาใน string (โดยที่เรารู้ว่ามันเป็นภาษาไทย) เราก็สามารถแปลงมันกลับเป็น string ที่อ่านออกใน C# ได้ดังต่อไปนี้ครับ

        public string FixThaiCodePage(string str){
            byte[] raw = Encoding.Default.GetBytes(str);
            string res = Encoding.GetEncoding("windows-874").GetString(raw);
            return res;
        }

บรรทัดแรกเป็นการแปลงให้เป็นอาเรย์ของ byte ก่อน (จริงๆ string ใน C# จัดเก็บในรูปแบบไหนก็จำไม่ได้เหมือนกัน รู้สึกว่าจะเป็น UTF-16)

หลังจากนั้นจึงจัดการแปลงเป็น string โดยใช้ Windows-874 เป็น Codepage

Tags: , , ,

Comments

1.
blueflame blueflame says:

มาเยี่ยมค่าาาาา

อยากจะสารภาพว่าแอมลืมภาษา C ไปหมดแล้ว - -"

Comments are closed