คลังเก็บป้ายกำกับ: ASCII

Unicode ใน SAP

หลายวันก่อนมีบริษัทผู้ให้บริการซอฟต์แวร์ SAP เข้ามาที่ทำงานผม เนื้อหาที่เขาเข้ามาพูดก็คือการปรับรุ่นของซอฟต์แวร์ SAP ที่ ๆ ทำงานผมใช้อยู่ จากรุ่น 4.7 ไปเป็น ECC6 ซึ่งเรื่องปรับรุ่นไม่มีประเด็น เพราะถ้าไม่ปรับก็คงจะไม่มีใครมาช่วยเหลืออีก เนื่องจาก SAP เขาจะหยุดสนับสนุน SAP รุ่น 4.7 ในอีกประมาณครึ่งปีข้างหน้านี้

แต่ที่มีประเด็นกลับเป็นเรื่องของ Unicode เพราะรุ่น 4.7 ไม่ได้ใช้ Unicode ในขณะที่รุ่น ECC6 ใช้ Unicode!!!

จริง ๆ แล้ว Unicode ถูกออกแบบขึ้นมา เพราะโลกเรามันมีภาษาเขียนหลายสิบหลายร้อยภาษา ดังนั้น การเอาตัวเลขเพียงแค่ 8 บิต (รหัส ASCII) มาแทนอักขระของทุกภาษามันจึงเป็นไปไม่ได้ ดังนั้น เขาก็เลยเอาตัวเลขแบบ 16 บิต (Unicode) มาใช้แทนอักขระของทุกภาษาในโลก และเป็นที่มาของสิ่งที่เรียกว่า Unicode

ปัจจุบันมีการเอาตัวเลขแบบ 32 บิต (Unicode) มาใช้แทนอักขระของทุกภาษาในโลกแล้วด้วยซ้ำไป!!!

ทีนี้วกกลับมาเรื่องปรับรุ่น SAP ก่อน คือ บางครั้งบริษัทผู้ให้บริการซอฟต์แวร์ SAP เขาก็นำเสนอไม่ค่อยเป็น เพราะเมื่อถูกถามว่าทำไมต้องเปลี่ยนไปเป็น Unicode แทนที่เขาจะอธิบายว่าการเก็บข้อมูลมันจะเปลี่ยน เช่น จากเดิมอักขระ “ก” จะถูกเก็บ 8 บิตเป็นค่า A1 พอเปลี่ยนมาเป็น 16 บิตแบบ Unicode ก็จะกลายเป็นค่า 0E01 อะไรแบบนี้ คือเขาควรอธิบายแบบนี้ แต่กลายเป็นว่าเขาพาออกทะเล ดันไปบอกว่าถ้าเราใช้ Unicode แล้วมันจะสนับสนุนหลายภาษาได้ พาเข้ารกเข้าพงไปกันใหญ่ เพราะพอถามกลับไปว่าปรกติก็ใช้แต่ภาษาอังกฤษกับภาษาไทย แล้วจะใช้ Unicode ไปทำไมล่ะ ในเมื่อไม่ได้ใช้หลายภาษา ใช้แค่สองภาษาเอง?

นอกจากนี้ก็ยังมีเรื่องของเนื้อที่จัดเก็บ เพราะเดี๋ยวนี้ SAP เขาเก็บเป็น Unicode 32 บิต นั่นแสดงว่าเราต้องเสียเนื้อที่เพื่อจัดเก็บแต่ล่ะอักขระเพิ่มขึ้นเป็น 4 เท่า คือ จากเดิมอักขระเดียว 8 บิต ก็กลายเป็นอักขระนึง 32 บิต ซึ่งแสดงว่าเราต้องเพิ่มเนื้อที่ฮาร์ดดิสก์อีกอย่างเยอะ เพื่อให้รองรับต่อการขยายตัวนี้ ซึ่งข้อนี้บริษัทเขาสามารถโต้แย้งได้ คือเขาบอกว่า SAP ECC6 มันสามารถบีบอัดข้อมูลได้ 30% ดังนั้น ไม่น่าจะมีประเด็นเรื่องของเนื้อที่

ตอนจบของการพูดคุยเราเลยบอกเขาไปว่า เรายังคงอยากเก็บหนึ่งอักขระด้วยตัวเลข 8 บิตอยู่ ดังนั้น ช่วยไปหาตัวแปลงทั้งขาเข้าและขาออกจาก SAP ECC6 ให้มันคุยกับข้างนอกเป็น Unicode 32 บิต แล้วคุยข้างในเป็น ASCII 8 บิตให้ที