Wednesday, May 30, 2012

ฟังก์ชั่นแปลง encode จาก tis620 เป็น utf8

ปัญหาเรื่องของการ Encode ภาษาไทยมักสร้างความปวดกระโหลกให้กับบรรดาโปรแกรมเมอร์มือใหม่และมือเก่า โดยเฉพาะใน PHP วันนี้ขอนำเสนออีกหนึ่งวิธีการ นั่นคือ ฟังก์ชั่นการแปลงรหัส tis620 เป็น utf8 ลองนำไปใช้กันดูครับอาจจะแก้ปัญหาที่ท่านกำลังประสพอยู่ก็เป็นได้ อิอิ
function tis620_to_utf8($text) {
  $utf8 = "";
  for ($i = 0; $i < strlen($text); $i++) {
    $a = substr($text, $i, 1);
    $val = ord($a);
 
    if ($val < 0x80) {
      $utf8 .= $a;
    } elseif ((0xA1 <= $val && $val < 0xDA) || (0xDF <= $val && $val <= 0xFB)) {
      $unicode = 0x0E00+$val-0xA0;
      $utf8 .= chr(0xE0 | ($unicode >> 12));
      $utf8 .= chr(0x80 | (($unicode >> 6) & 0x3F));
      $utf8 .= chr(0x80 | ($unicode & 0x3F));
    }
  }
  return $utf8;
}
จากฟังก์ชั่นข้างต้นนี้เป็นการแนะนำข้อความแต่ละอักขระในรูปแบบ tis620 มาเทียบกับรหัสในรูปแบบ utf8 แล้วส่งคืนค่ากลับครับ

No comments:

Post a Comment