คิดว่าคงจะรู้กันโดยทั่วไปแล้ว ว่าเราสามารถใช้ Ruby กับ String ที่เข้ารหัสแบบ UTF-8 ได้ ที่ว่าใช้ได้นี่หมายความว่า ได้ข้อมูล (ข้อความ) มา ก็สามารถเก็บลงไปในตัวแปรได้เลย ไม่เกิดปัญหาอะไร แต่โดยการทำงานจริงๆ แล้ว Ruby ไม่ได้สนับสนุน UTF-8 หรือการเข้ารหัสข้อความแบบใดๆ ทั้งสิ้น เพียงแค่พิจารณาว่า String ก็คือลำดับของตัวอักษร ที่ตัวอักษรหนึ่งตัวมีขนาดเท่ากัน (จะเป็น 1 ไบต์ หรือ 2 ไบต์ ก็แล้วแต่การใช้งาน) ดังนั้นจึงใช้กับ UTF-8 ที่เก็บตัวอักษรแต่ละตัวด้วยที่ไม่เท่ากันไม่ได้
พอดีช่วงนี้กำลังเขียน Ruby เพื่อจัดการข้อความภาษาไทย และพยายามออกแบบให้จัดการกับภาษาอื่นๆ ได้ด้วย ก็เลยต้องเก็บทุกอย่างไว้เป็น UTF-8 จะได้ไม่เสียเวลาแปลงข้อมูล เสร็จแล้วทีนี้จะต้องเข้าถึงตัวอักษรแต่ละตัวเพื่อคำนวณค่าอะไรบางอย่าง จะใช้ [] ก็ไม่ได้แล้ว เพราะจะได้ตัวอักษรไม่ตรงตัว สุดท้ายเลยต้องไปหา gem ที่ช่วยจัดการ UTF-8 มาลองใช้ด้วย เท่าที่ลองหาดูก็เจอ
การใช้งานก็ไม่ยาก ลองดูตามตัวอย่างนี้ได้เลย
require 'rubygems' require 'encoding/character/utf-8' s = +"สวัสดีครับ" a = Array.new s.each_char {|c| a << c}
แค่นี้เราก็แยกตัวอักษรแต่ละตัวจาก s ไปไว้ในอะเรย์ a ได้เลย ตัวอักษรแต่ละตัวก็ยังเก็บในฐานะ String เหมือนเดิม ถ้ามองในแง่ความสะดวกแล้ว การทำแบบนี้ก็ง่ายดี แต่ดูแล้วมันต้องแปลงไปแปลงมาอยู่หลายรอบเหมือนกัน
Tags: programming, ruby
วันนี้มีเรื่องต่อว่ากันเกิดขึ้น เลยขอมาระบายไว้ที่นี้ว่า ผมไม่ได้อยากให้ใครสอบตก เพราะผมรู้ดีว่าคนได้รับจะทุกข์ใจแค่ไหน มันมีหลายเรื่องมาเกี่ยวข้อง ทั้งเรื่องเวลาที่จะต้องไปเรียนใหม่อีกรอบ เรื่องเงินที่จะต้องเสียตอนลงทะเบียนอีกรอบ (ซึ่งมันไม่ถูกเลย) แรกๆ ที่มาสอนหนังสือนี่ แทบจะให้เกรดต่ำสุดที่ C เพื่อเป็นการป้องการตัวเองทางจิตใจ ไม่ต้องคิดว่าใครจะมีปัญหา คิดว่าอย่างน้อยทุกคนคงจะรับได้ แต่ผมก็มีมาตรฐานทางวิชาการของผมเหมือนกัน ถ้าคนเรียนไม่ได้แสดงให้เห็นว่าได้พยายามอย่างเต็มที่แล้ว การต่อว่าอาจจะทำให้เซ็งในอารมณ์ จนต้องมาบ่นบ้าง แต่ก็คงไม่ทำให้มาตรฐานของผมเปลี่ยนไป ผมก็คงยังยืนอยู่ที่เดิม ยังคงทำอย่างนี้เหมือนเดิม
เฮ้อ….นี่ขนาดไม่ได้เจอกับตัวนะเนี่ย
Tags: บ่น
ทดสอบการโพสต์ข้อความบน WordPress