เมนู

รูปแบบรหัสไปรษณีย์ของแต่ละประเทศที่ควรรู้ก่อนออกแบบระบบ

รูปแบบรหัสไปรษณีย์ของแต่ละประเทศไม่ได้มีแค่ตัวเลขหกหลัก บทความนี้เทียบความยาวและชนิดอักขระที่ใช้จริง อธิบายประเทศที่ไม่มีระบบนี้ และกับดักของเลขศูนย์นำหน้า

เผยแพร่เมื่อ

  • ข้อมูลทดสอบ
  • รหัสไปรษณีย์

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

รหัสไปรษณีย์ทำหน้าที่อะไรกันแน่?

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

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

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

ทุกประเทศมีรหัสไปรษณีย์หรือไม่?

คำตอบคือไม่ ยังมีหลายประเทศและเขตปกครองที่ไม่มีระบบรหัสไปรษณีย์ใช้เลย บางแห่งเคยมีแล้วยกเลิกไป บางแห่งใช้เฉพาะในเมืองใหญ่ และบางแห่งมีระบบภายในสำหรับงานไปรษณีย์แต่ไม่เปิดให้ประชาชนกรอกในจดหมายทั่วไป

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

วิธีรับมือที่นิยมคือทำให้ความจำเป็นในการกรอกขึ้นอยู่กับประเทศที่เลือก และเมื่อประเทศนั้นไม่มีระบบ ให้ซ่อนช่องนั้นไปเลยแทนที่จะปล่อยว่างไว้แล้วขึ้นข้อความเตือน วิธีนี้ลดทั้งความสับสนและจำนวนข้อผิดพลาดในการกรอก

บนหน้าประเทศประเทศไทยของเว็บไซต์นี้มีข้อมูลรูปแบบที่อยู่และรหัสไปรษณีย์ที่ใช้จริงในแต่ละพื้นที่ให้เทียบดู ซึ่งช่วยให้เห็นภาพว่าความหลากหลายนี้ไม่ได้อยู่ไกลตัวเลย

แต่ละประเทศใช้รูปแบบต่างกันอย่างไร?

ถ้าจับกลุ่มตามลักษณะของอักขระและความยาว จะเห็นรูปแบบหลัก ๆ ได้ประมาณนี้

กลุ่มรูปแบบ ลักษณะที่สังเกตได้ ตัวอย่างประเทศหรือพื้นที่
ตัวเลขล้วน ความยาวสั้น มักเป็นสี่ถึงห้าหลัก ใช้พื้นที่กว้างต่อรหัสหนึ่งรหัส หลายประเทศในยุโรปและเอเชีย
ตัวเลขล้วน ความยาวปานกลาง หกหลักขึ้นไป ใช้แยกละเอียดขึ้นในเมืองใหญ่ หลายประเทศในเอเชียตะวันออกและเอเชียตะวันออกเฉียงใต้
ตัวเลขผสมตัวอักษร มีทั้งตัวเลขและตัวอักษรในรหัสเดียว โดยมีตำแหน่งตายตัว แคนาดา สหราชอาณาจักร เนเธอร์แลนด์ ไอร์แลนด์
แบ่งเป็นสองท่อนตามโครงสร้าง ท่อนแรกบอกพื้นที่ ท่อนหลังบอกจุดนำจ่าย สหราชอาณาจักร เนเธอร์แลนด์ และประเทศที่เลียนแบบโครงนี้
ไม่มีระบบรหัสไปรษณีย์ ไม่มีอะไรให้กรอกในช่องนี้เลย ประเทศและเขตปกครองบางแห่ง

จากตารางจะเห็นว่าการยึดติดกับสมมติฐานว่าทุกรหัสเป็นตัวเลขนั้นใช้ไม่ได้กับโลกจริง และการยึดติดอีกด้านคือการคิดว่าทุกรหัสมีตัวอักษรปนอยู่ก็ผิดไม่แพ้กัน คำตอบที่ปลอดภัยที่สุดคืออ่านรูปแบบจากข้อมูลของประเทศนั้น ไม่ใช่ตัดสินจากความคุ้นเคยของตนเอง

เลขศูนย์นำหน้าสำคัญอย่างไร?

หลายประเทศมีรหัสไปรษณีย์ที่ขึ้นต้นด้วยศูนย์ เช่น รหัสที่ขึ้นต้นด้วยศูนย์สองตัว แล้วตามด้วยตัวเลขอีกสามหลัก ตัวเลขศูนย์เหล่านี้มีความหมายเต็มที่ในระบบไปรษณีย์ แต่มักหายไปทันทีที่ข้อมูลผ่านระบบที่ไม่เข้าใจมัน

สาเหตุที่พบบ่อยที่สุดคือการเก็บรหัสไปรษณีย์เป็นชนิดตัวเลข ระบบฐานข้อมูลจะมองว่าศูนย์นำหน้าไม่มีค่า แล้วตัดทิ้งเมื่อบันทึก เพราะโดยหลักคณิตศาสตร์แล้วเลขศูนย์ที่อยู่ข้างหน้าตัวเลขไม่เปลี่ยนค่าของจำนวน ผลคือรหัสที่เคยขึ้นต้นด้วยศูนย์กลายเป็นตัวเลขสั้นลงหนึ่งหลัก และการจัดส่งก็ผิดพื้นที่ทันที

อีกสาเหตุหนึ่งที่พบได้คือการแปลงข้อมูลผ่านไฟล์ตารางหรือโปรแกรมสำเร็จรูปที่เดาชนิดข้อมูลให้เองโดยอัตโนมัติ ไฟล์ต้นทางเก็บรหัสเป็นข้อความ แต่ปลายทางตีความเป็นตัวเลขแล้วตัดศูนย์นำหน้าออกโดยไม่มีใครรู้ตัว

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

รูปแบบรหัสไปรษณีย์เปลี่ยนได้หรือไม่?

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

ผลที่ตามมากับระบบของคุณคือ กฎตรวจสอบที่เคยถูกต้องอาจปฏิเสธรหัสใหม่ที่ทางไปรษณีย์เพิ่งประกาศใช้ ผู้ใช้ที่ถือรหัสใหม่จะกรอกไม่ผ่านและติดต่อฝ่ายสนับสนุน ซึ่งสร้างภาระโดยไม่จำเป็น

วิธีรับมือที่สมดุลคือตรวจแบบหลวมที่ต้นทาง และตรวจแบบเข้มที่ปลายทาง ต้นทางทำเพียงตรวจว่าอักขระที่พิมพ์เข้ามาเป็นชนิดที่ประเทศนั้นใช้และความยาวอยู่ในช่วงที่ยอมรับได้ ส่วนการยืนยันกับฐานข้อมูลจริงของหน่วยงานไปรษณีย์ควรเป็นขั้นตอนแยกที่ล้มเหลวได้โดยไม่ปิดกั้นผู้ใช้ทันที

อีกข้อที่ช่วยได้มากคือเก็บรหัสไปรษณีย์ไว้เป็นข้อมูลประกอบ ไม่ใช่ใช้เป็นกุญแจอ้างอิงหลักของที่อยู่ เพราะเมื่อรหัสเปลี่ยน คุณจะอัปเดตได้โดยไม่กระทบโครงสร้างที่เหลือของระบบ

สำหรับนักพัฒนา: ออกแบบช่องรหัสไปรษณีย์ให้ทนต่อความต่าง

ข้อแรกคือกำหนดชนิดข้อมูลเป็นข้อความ และกำหนดความยาวสูงสุดให้กว้างกว่าที่คิดไว้ เช่นสิบสองอักขระ เพื่อรองรับการเว้นวรรคและอักขระคั่นที่ผู้ใช้พิมพ์ติดมือมา การตัดช่องว่างหัวท้ายก่อนบันทึกเป็นเรื่องที่ควรทำ แต่การลบช่องว่างกลางรหัสไม่ควรทำ เพราะบางประเทศเขียนรหัสเป็นสองท่อนโดยมีช่องว่างคั่น

ข้อที่สองคือตารางรูปแบบรายประเทศ ไม่ใช่เงื่อนไขแบบกระจายอยู่หลายที่ ตารางนี้ควรบอกอย่างน้อยสามอย่าง คือประเทศนั้นมีระบบรหัสไปรษณีย์หรือไม่ ต้องการรหัสกี่อักขระ และยอมรับอักขระชนิดใด เมื่อมีประเทศใหม่เพิ่มเข้ามา การแก้ไขจะอยู่ที่เดียว

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

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

ข้อสุดท้ายคือบันทึกรหัสที่ผู้ใช้กรอกไว้เสมอ แม้ระบบจะตัดสินว่าไม่ผ่านการตรวจ เพราะรหัสที่ผิดในสายตาของเราอาจเป็นรหัสที่ถูกต้องของพื้นที่ใหม่ที่เรายังไม่รู้จัก การเก็บไว้ทำให้ตรวจย้อนหลังได้ว่าปัญหาเกิดจากกฎของเราหรือจากข้อมูลของผู้ใช้

ก้าวต่อไป

ลองเปิดระบบของคุณแล้วค้นหาว่ามีที่ใดบ้างที่เก็บรหัสไปรษณีย์เป็นชนิดตัวเลข หรือมีที่ใดที่บังคับให้กรอกช่องนี้โดยไม่สนใจประเทศที่เลือก สองจุดนี้คือจุดที่สร้างปัญหาให้ผู้ใช้มากที่สุดและแก้ไขได้เร็วที่สุด

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

อ่านต่อ

บทความเกี่ยวกับ เครื่องมือสร้างที่อยู่ปลอม

บทความเกี่ยวกับ เครื่องมือสร้างที่อยู่ปลอม

รายการนี้แสดงเฉพาะบทความในหัวข้อของหน้านี้