選單

ISO 國家代碼怎麼用?三種碼與行政區代碼的差別

ISO 國家代碼有兩字母、三字母與數字三種形式,用途各不相同;行政區代碼則是另一套組合規則。本文說明三種碼的分工、行政區代碼與各國自家代碼的差別,以及為什麼不該自己造一組。

發佈於

  • 測試資料
  • 地址

ISO 國家代碼看起來只是一個小欄位,實際上它同時牽涉三種不同形式的代碼、以及另一套行政區代碼的組合規則。搞混這些層次,會讓匯入、比對與顯示處處出錯。以下說明每種碼的用途、行政區代碼的組成方式,以及維護對照表時該注意什麼。

國家代碼為什麼不只一種?

同一個國家在國際標準裡有好幾種表示法,它們並不是新舊版本的關係,而是為了不同用途而並存。有的場合需要人看得懂、有的場合需要短到能塞進固定欄位、有的場合則希望即使語言與字型環境不同也不會被誤讀。

因此系統在設計時要問的不是「哪一種才對」,而是「這個欄位要用來做什麼」。只用於內部儲存與程式判斷的,和給人閱讀或印在文件上的,往往會選不同的形式。

最常見的錯誤是把兩種形式混在同一個欄位裡,導致同一個國家出現兩種值,統計時被算成兩個地區。

兩字母、三字母與數字碼分別用在哪

兩字母的形式最短,常見於網路協定、表單選單與需要節省空間的場合。三字母的形式辨識度較高,常用於文件、報表與需要避免縮寫歧義的地方。數字形式則避免了字母語言帶來的困擾,常用於統計與跨語言交換。

形式 長度 常見用途
兩字母 最短 表單、通訊協定、內部儲存
三字母 較長 文件、報表、對外呈現
數字 固定 統計、跨語言交換

三種形式都指向同一個國家,因此對照表必須同時保留三者,並且只認其中一種作為系統的內部主鍵。常見做法是用兩字母當主鍵,其餘兩種作為查詢用的別名,這樣既省空間,也不必在每次顯示時重新推導。

要注意的是,別名不能當成主鍵使用。一旦允許兩種形式都能寫入,資料庫裡就會出現同國兩值的狀況,而這種錯誤通常要等到產出報表時才會被發現。

數字形式還有一個容易被忽略的細節:它通常是固定長度,開頭若有零也必須保留。若這個值曾被當成整數處理,前導零消失後可能變成另一組完全有效的代碼,指向另一個國家,而這種錯誤不會有任何警告,只能靠人工發現。

ISO 3166-2 和當地行政區代碼有什麼不同?

行政區代碼的組成方式是把國家代碼與連字符、再加上當地的行政區識別碼串起來。也就是說,前半段是國家、後半段是該國內部的分區,兩者合起來才唯一。

它與各國自己發行的行政區代碼並不是同一件事。當地政府、郵政單位或統計部門各自可能有自己的編碼,長度與格式都不一樣,也不能互換使用。若你的系統同時要對接外部資料,就得分清楚手上這批代碼是哪一套。

另一個常見誤解是把它當成郵遞區號或電話區號使用。它標示的是行政層級的位置,與投遞路徑和電信路由都沒有關係。

同一個國家的內部分層也可能不只一層,例如先分大區、再分下級行政區。欄位設計時要先決定系統只存到哪一層,並在需要更細的層級時另開欄位,而不是把兩層串成一個字串。串起來之後,你既無法單獨查詢其中一層,也無法保證分隔符號不會與代碼本身衝突。

為什麼不能自己發明代碼?

臨時新增代碼看起來很方便,例如為了某個尚未被涵蓋的地區先編一個,或在代碼後面加上自訂後綴。問題是這些自造的值無法與外部交換,對方收到時只能猜測,而猜錯的時候往往不會有人發現。

更麻煩的是後續維護:自造代碼一旦寫進資料庫、報表與匯出檔,就變成事實上的內部標準,之後要換回正式代碼得同時修改所有依賴它的地方。

如果標準裡真的還沒有你要的項目,比較好的做法是保留一個明確的「未指定」或「其他」值,並在備註欄記錄原因,而不是造一個看起來像正式代碼的字串。真正需要新增代碼的情況,通常是標準本身更新了,那就等對照表跟著更新,而不是在應用層先跑一步。行政區層級的分工細節,可以對照國際地址格式裡的欄位說明。

儲存與顯示要分開處理

儲存時用穩定的代碼,顯示時才轉成當地語言的名稱,這是最不容易出錯的分工。若把兩者混在一起,介面翻譯與資料比對就會互相牽制:改一個顯示名稱,可能不小心改到用來比對的值。

同時也要考慮大小寫。有些場合習慣寫成大寫,有些允許小寫,而比對時若沒有統一,同一個國家就會被判成不同。統一在寫入時轉成大寫或小寫,並在顯示時再依需要調整,是比較省事的做法。

另外,對照表本身要能回答「這個代碼屬於哪個國家」。少了這層關係,行政區欄位就只能靠人工判斷是否與國家相符,而人工判斷在批次匯入時幾乎不會發生。

本站的隨機地址產生器在產生地址時,國家與行政區都取自同一份對照資料,因此不會出現代碼與名稱互相矛盾的情況,適合用來驗證你的欄位是否正確地分開儲存與顯示。這些產生的內容只供測試,不能投遞,也不代表任何人的實際所在地。想看某個國家實際的欄位組合,可以參考德國國家頁。

給開發者:對照表的維護方式

  • 只用一種形式當內部主鍵,其餘形式當查詢別名。
  • 對照表集中一份,不要在每個模組各寫一張小表。
  • 保留「未指定」值,避免為了填滿欄位而自造代碼。
  • 行政區代碼與國家代碼分開驗證,不要用同一條規則套用。
  • 更新對照表時留下版本與日期,方便日後解釋資料為何改變。
  • 數字形式的代碼當成文字處理,前導零不能省略。

測試資料裡的國家與行政區組合,也建議直接沿用這份對照表產生,而不是手寫。手寫的代碼很快就會與現實脫節,而且錯誤通常藏在很少被使用的那幾個值裡。

下一步

先檢查你的系統裡國家代碼有幾種寫法,把混用的地方收斂成一種主鍵;再確認行政區代碼有沒有被當成國家代碼的替代品使用。要接著設計跨國欄位的測試樣本,讀測試固定裝置裡的地址資料。

繼續閱讀

隨機地址產生器相關文章