Cập nhật lần cuối:

Định dạng địa chỉ theo quốc gia và số ký tự - Thiết kế form nhập liệu toàn cầu

Khoảng 10 phút đọc

Địa chỉ khác nhau giữa các quốc gia ở gần như mọi thứ: thứ tự các thành phần, số chữ số của mã bưu chính, cả chuyện thành phần nào là bắt buộc. Thiết kế form mà không biết thành phần nào làm số ký tự phình lên thì kết quả là những trường nhập mà địa chỉ thật không vừa. Bài viết này mổ xẻ một địa chỉ Nhật Bản rồi đếm từng phần, đọc các giới hạn độ dài mà một chuẩn dữ liệu bưu chính quốc gia thực sự quy định, và từ hai thứ đó dựng ra những giá trị maxlength có căn cứ.

Cấu trúc địa chỉ theo quốc gia - Thành phần và thứ tự

Điểm khác biệt đầu tiên giữa các nước không phải độ dài mà là thứ tự sắp xếp: có nước viết từ đơn vị lớn xuống nhỏ, có nước làm ngược lại.

Quốc giaThứ tự thành phầnĐặc điểm
Nhật BảnMã bưu chính, tỉnh, thành phố, quận, khu phố, số nhàViết từ đơn vị lớn đến nhỏ, mã bưu chính 7 chữ số
MỹSố nhà, đường, thành phố, bang, mã ZIPViết từ nhỏ đến lớn, ZIP code 5 hoặc 9 chữ số
AnhSố nhà, đường, thành phố, mã bưu chínhPostcode ngắn (6-8 ký tự) nhưng định vị rất chính xác
ĐứcĐường + số nhà, mã bưu chính, thành phốSố nhà đặt sau tên đường
Hàn QuốcTỉnh, thành phố, quận, phường (dong), số nhàGiống Nhật, viết từ lớn đến nhỏ
Thái LanSố nhà, moo, soi, đường, khet, khwaeng, tỉnh, mã bưu chínhNhiều cấp hành chính hơn phần lớn các nước
BrazilĐường, số nhà, thông tin bổ sung, khu phố, thành phố, bang, mã CEPCó trường "complemento" đặc trưng

Hệ thống hành chính của Thái Lan có nhiều cấp (changwat, amphoe, tambon, moo) và địa danh viết bằng chữ Thái thường dài, nên một địa chỉ đầy đủ ở Bangkok phải xâu chuỗi rất nhiều thành phần. Bắt buộc mọi người dùng theo một thứ tự duy nhất, hoặc gán cứng ý nghĩa cho từng trường, là cách nhanh nhất để làm khó những địa chỉ như vậy.

Một chuẩn dữ liệu bưu chính quy định giới hạn nào - PAF của Royal Mail

Thay vì đoán độ dài "thường gặp", ta có thể đọc thẳng con số từ một chuẩn dữ liệu bưu chính quốc gia. Royal Mail công bố độ dài tối đa của từng trường trong Postcode Address File (PAF) - tệp địa chỉ chính thức của Anh. Đây là giới hạn của từng trường riêng lẻ, không phải độ dài địa chỉ trung bình.

Trường trong PAFĐộ dài tối đaVai trò
Organisation Name60 ký tựTên tổ chức tại địa chỉ đó
Department Name60 ký tựBộ phận bên trong tổ chức
PO Box30 ký tựSố hộp thư
Sub Building Name50 ký tựCăn hộ, tầng, đơn nguyên
Building Number4 ký tựSố nhà dạng chữ số
Building Name60 ký tựTên tòa nhà khi không có số
Thoroughfare Descriptor20 ký tựPhần loại đường: Street, Road, Lane...
Thoroughfare Name60 ký tựPhần tên riêng của đường
Dependent Thoroughfare Descriptor20 ký tựLoại đường phụ thuộc
Dependent Thoroughfare Name35 ký tựTên đường phụ thuộc
Double Dependent Locality35 ký tựKhu vực nhỏ nhất
Dependent Locality30 ký tựKhu vực trong phạm vi post town
Postcode7 ký tựMã bưu chính, chưa tính dấu cách

Cộng cả 13 trường lại được 471 ký tự - nhưng không địa chỉ nào dùng hết tất cả các trường cùng lúc. Con số "80 ký tự" đôi khi được nhắc đến như giới hạn tên đường theo PAF thực chất là phép cộng của hai trường: Thoroughfare Name (60) và Thoroughfare Descriptor (20). Trong PAF không tồn tại một trường đơn lẻ nào dài 80 ký tự. Đây chính là kiểu sai sót dễ mắc khi thiết kế form: gộp hai trường của chuẩn dữ liệu thành một rồi tưởng đó là giới hạn gốc.

Thử với một địa chỉ Anh dạng ví dụ (địa chỉ giả định, không phải địa chỉ thật) - "Flat 3, 27 Elm Street, Kensington, London, W8 5DL" - toàn bộ chuỗi chỉ dài 49 ký tự, tức khoảng một phần mười tổng giới hạn của các trường. Giới hạn trường tồn tại để đỡ những trường hợp ngoại lệ, không phải để mô tả trường hợp phổ biến.

Mã bưu chính - Từ 4 đến 10 ký tự

Mã bưu chính (postal code) là thành phần địa chỉ có độ dài chênh lệch nhiều nhất giữa các quốc gia.

Quốc giaĐịnh dạngĐộ dàiVí dụ
Nhật BảnNNN-NNNN8 ký tự (tính cả dấu gạch)100-0001
MỹNNNNN hoặc NNNNN-NNNN5 hoặc 10 ký tự10001, 10001-1234
AnhAN NAA, ANN NAA, v.v.6-8 ký tựSW1A 1AA
CanadaANA NAN7 ký tựK1A 0B1
ĐứcNNNNN5 ký tự10115
BrazilNNNNN-NNN9 ký tự (tính cả dấu gạch)01001-000
IrelandANN XXXX8 ký tự (tính cả dấu cách)D02 AF30

Mã bưu chính của Anh nằm trong số những hệ thống rắc rối nhất. Vì có tới 6 định dạng hợp lệ (A9 9AA, A99 9AA, A9A 9AA, AA9 9AA, AA99 9AA, AA9A 9AA), một mẫu regex viết vội rất dễ từ chối nhầm những mã hoàn toàn hợp lệ. Nhiều lập trình viên vì thế chọn cách chỉ kiểm tra độ dài và dạng thức cơ bản thay vì cố validate cho thật chuẩn.

Bù lại cho sự rắc rối đó là độ phân giải: một mã bưu chính Anh viết đầy đủ thu hẹp phạm vi xuống còn một nhóm khoảng mười địa chỉ, hoặc một điểm nhận thư duy nhất nếu nơi đó nhận lượng thư lớn. Mã bưu chính Nhật Bản chỉ định vị tới cấp khu phố, nên vẫn cần nhập tiếp số nhà. Cùng gọi là "mã bưu chính" nhưng lượng thông tin hai bên mang theo khác nhau hẳn, và điều đó quyết định form có tự động điền được đến đâu.

Ireland là trường hợp đáng nhắc riêng: hệ thống Eircode chỉ được đưa vào sử dụng năm 2015, muộn hơn hẳn các nước châu Âu khác. Một Eircode gồm 7 ký tự, chia làm hai phần: 3 ký tự đầu là routing key chỉ khu vực chia chọn thư, 4 ký tự sau là định danh riêng của từng điểm nhận thư. Nhờ vế sau này mà mỗi địa chỉ có một mã riêng biệt - điều rất cần thiết ở một nước mà nhiều nhà tại vùng nông thôn không có số nhà, chỉ có tên nhà và tên khu vực.

Thiết kế maxlength cho form địa chỉ - Bài toán cân bằng

Chọn maxlength cho trường địa chỉ là bài toán cân bằng giữa an toàn dữ liệu (chặn dữ liệu rác) và trải nghiệm người dùng (không cắt mất địa chỉ hợp lệ). Các giá trị dưới đây lấy căn cứ từ hai nguồn đã nêu ở trên: giới hạn trường của PAF và số ký tự đo được của những tên riêng dài trong thực tế.

Trườngmaxlength gợi ýLý do
Địa chỉ dòng 1 (đường, số nhà)100 ký tựPAF: Thoroughfare Name 60 + Descriptor 20 + Building Number 4 = 84, còn dư chỗ
Địa chỉ dòng 2 (bổ sung)100 ký tựPAF: Building Name 60, Sub Building Name 50 - đủ cho từng trường kèm chú thích ngắn
Thành phố60 ký tựPAF giới hạn Dependent Locality ở 30 ký tự, nhưng tên làng ở xứ Wales dưới đây dài 58 ký tự
Tỉnh/Bang50 ký tựTên chính thức của bang Veracruz de Ignacio de la Llave (Mexico) dài 31 ký tự
Mã bưu chính12 ký tựĐịnh dạng dài nhất trong bảng trên là 10 ký tự, chừa dư cho dấu cách và biến thể
Quốc gia60 ký tự"The United Kingdom of Great Britain..." dài 56 ký tự

Một trong những địa danh dài nhất mà bưu chính thực sự phải xử lý là ngôi làng ở xứ Wales: "Llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch", đo được đúng 58 ký tự. Vẫn có địa danh dài hơn nữa - ngọn đồi Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu ở New Zealand đo được 85 ký tự - nhưng làng ở xứ Wales là nơi có người ở và có địa chỉ nhận thư, nên nó đặt ra một mức sàn thực tế cho trường thành phố. Con số 58 đó là lý do trực tiếp để không đặt maxlength 30 ký tự cho trường này.

Địa chỉ Nhật Bản - Mổ xẻ cấu trúc và độ dài

Địa chỉ Nhật Bản có cấu trúc đặc trưng: viết từ đơn vị lớn xuống đơn vị nhỏ, ngược với phần lớn các nước phương Tây.

Cách chắc chắn nhất để biết thành phần nào làm địa chỉ dài ra là đo từng phần. Bảng dưới đây tách một địa chỉ Nhật thành các thành phần rồi đếm số ký tự của mỗi phần, với quy ước: dấu cách nửa chiều rộng tính là 1 ký tự, ký hiệu 〒 không tính.

Thành phầnVí dụSố ký tựGhi chú
Mã bưu chính100-00018Luôn cố định 8 ký tự tính cả dấu gạch
Tỉnh (đô/phủ/huyện)東京都 / 神奈川県3 / 444 trong 47 tỉnh viết bằng 3 ký tự, chỉ 3 tỉnh cần 4 ký tự
Thành phố và quậnさいたま市浦和区8Thành phố có quận thì cộng dồn hai cấp
Khu phố và số nhà丸の内 1-1-19Phần số rất gọn nhờ hệ thống chome-banchi-go
Tên tòa nhàパークコート赤坂ザ・タワー13Thành phần biến động nhiều nhất
Tên tòa nhà kèm số phòngパークコート赤坂ザ・タワー 1501 号室21Số phòng cộng thêm khoảng 8 ký tự

Nối toàn bộ các thành phần trên thành một chuỗi (mã bưu chính, tỉnh, thành phố và quận, khu phố và số nhà, tên tòa nhà kèm số phòng, ngăn nhau bằng dấu cách) được 53 ký tự. Điều đáng chú ý là tỉnh - phần mà nhiều người tưởng phải chừa nhiều chỗ - chỉ chiếm 3 hoặc 4 ký tự kanji, trong khi tên tòa nhà một mình đã chiếm 13 ký tự và lên tới 21 khi kèm số phòng. Nếu phải siết giới hạn ký tự, đó là trường cần được chừa dư nhất.

Nét riêng của địa chỉ Nhật là hệ thống "chome-banchi-go" (丁目-番地-号): đánh số theo lô đất trong khu vực thay vì theo mặt đường, nên tìm đường ở Nhật khó hơn so với hệ thống phương Tây. Bù lại, xét về số ký tự thì cách viết này rất gọn - cụm "3-15-7" chỉ chiếm 6 ký tự.

Khi thiết kế form cho thị trường Nhật, nên tách địa chỉ thành các trường riêng: mã bưu chính (dùng để tự động điền tỉnh và thành phố), phần còn lại của địa chỉ, và tên tòa nhà. Cách này vừa giảm lỗi gõ nhầm vừa giữ cho dữ liệu có cấu trúc. Như đã phân tích trong bài Xác thực đầu vào form, chia nhỏ trường nhập liệu giúp kiểm soát chất lượng dữ liệu tốt hơn hẳn.

Địa chỉ quốc tế trong thương mại điện tử - Thách thức thực tế

Một cửa hàng bán ra nước ngoài phải nhận địa chỉ từ hàng trăm quốc gia và vùng lãnh thổ với thứ tự thành phần khác nhau. Trên thực tế chỉ có hai hướng thiết kế, và mỗi hướng đánh đổi một thứ khác nhau.

Hướng thứ nhất là form thích ứng theo quốc gia: người dùng chọn quốc gia trước, rồi số trường, nhãn trường và thứ tự hiển thị đổi theo. Chọn Nhật Bản thì mã bưu chính lên đầu và có thể dùng để tự động điền tỉnh, thành phố; chọn Mỹ thì đổi sang thứ tự số nhà trước rồi mới đến bang và mã ZIP. Người dùng thấy đúng những trường mà nước mình vẫn dùng, nhưng bên vận hành phải duy trì một bộ định nghĩa định dạng địa chỉ cho từng quốc gia và cập nhật khi có thay đổi.

Hướng thứ hai là hai dòng nhập tự do: một cặp trường địa chỉ với giới hạn ký tự rộng, kèm các trường riêng cho thành phố, tỉnh/bang và mã bưu chính. Mô hình này hợp với mọi thứ tự viết vì nó không gán ý nghĩa cho từng dòng, và giới hạn trường của PAF ở trên cho biết cần chừa bao nhiêu chỗ. Đổi lại, dữ liệu thu về ít cấu trúc hơn, nên việc validate và chuẩn hóa về sau vất vả hơn.

Với các dự án nhỏ, giải pháp thiết thực là dùng API chuẩn hóa địa chỉ như Google Places Autocomplete: người dùng gõ vài chữ đầu, API gợi ý ngay địa chỉ đầy đủ và có cấu trúc. Vừa giảm lỗi nhập liệu, vừa bảo đảm định dạng chuẩn, trải nghiệm lại tốt hơn. Như đã bàn trong bài Thiết kế độ dài văn bản đa ngôn ngữ, xử lý địa chỉ quốc tế là một trong những phần hóc búa nhất của thiết kế form đa ngôn ngữ.

Xu hướng tương lai - Địa chỉ số và mã hóa vị trí

Hệ thống what3words chia toàn bộ bề mặt Trái Đất thành các ô vuông 3 m x 3 m và gán cho mỗi ô một "địa chỉ" gồm 3 từ. Chẳng hạn "filled.count.soap" trỏ đến một vị trí cụ thể với độ chính xác 3 m. Chuỗi này đo được 17 ký tự - ngắn hơn hầu hết mọi thành phần địa chỉ trong các bảng ở trên, mà vẫn khoanh được một ô 3 m x 3 m mà không cần đến tên đường hay số nhà.

Plus Codes của Google (ví dụ dạng rút gọn "8Q7X+MR Tokyo") cũng là một hệ thống mã hóa vị trí ngắn gọn: một mã đầy đủ 10 ký tự khoanh vị trí trong phạm vi khoảng 14 m x 14 m, và thêm ký tự nữa thì phạm vi càng nhỏ. Những hệ thống kiểu này đặc biệt hữu ích ở nơi không có địa chỉ truyền thống - vùng nông thôn hẻo lánh, khu định cư tự phát, hay những quốc gia chưa xây xong hệ thống địa chỉ.

Dù vậy, địa chỉ truyền thống sẽ chưa biến mất sớm đâu. Con người vẫn cần một địa chỉ đọc được để trao đổi với nhau, và mạng lưới bưu chính toàn cầu vẫn vận hành trên địa chỉ dạng chữ. Bài toán của nhà phát triển là đỡ được cả hai trong cùng một form nhập liệu: địa chỉ truyền thống để tương thích ngược, mã vị trí để có độ chính xác cao.

Chia sẻ bài viết này