選單

各國姓名格式差在哪?姓名順序、單名與變音符號

各國姓名格式在順序、數量與字元上都不一樣:東亞與匈牙利先姓後名,也有合法的單名與變音符號。本文說明這些差異從何而來,以及欄位與比對邏輯該怎麼設計才不會漏掉人。

發佈於

  • 測試資料
  • 身份資訊

各國姓名格式的差異比多數人以為的更大:姓名順序、姓與名的數量、允許的字元與大小寫規則都不同。以下說明這些差異從哪裡來、哪些寫法其實完全合法,以及為什麼欄位設計不能假設全世界都只有一個姓加一個名。

姓名順序不是全球統一

在許多東亞國家與匈牙利,書寫時把姓放在前面,名字放在後面;英語系與多數歐洲國家則慣例先名後姓。這個順序看起來只是排版問題,實際上會影響解析:當系統只收到一行文字,卻不知道它用的是哪一種順序,任何自動拆解都有一半的機率猜錯。

表單標籤本身也帶著假設。當欄位寫著「名字」與「姓氏」時,它已經預設了先名後姓的結構;對習慣先姓後名的使用者來說,填寫順序與閱讀順序不一致,出錯的機率自然提高。比較穩妥的做法是讓標籤說明可接受的寫法,或直接提供單一欄位。

顯示與排序也應該分開處理。顯示時依使用者語言決定誰在前,排序時則必須固定用同一個欄位,否則同一份名單在不同語系下會排出不同順序,看起來像是資料不一致。若報表需要同時顯示原始姓名與排序用欄位,最好在標題上說清楚,避免使用者在兩個看似相同的清單裡找不到同一個人。

只有單名為什麼也是合法的?

有些地區的人依法只有一個名字,沒有姓氏;也有些名字本身就是完整的一段,拆開反而失去意義。系統若把姓氏欄位標成必填,就會把這些人擋在門外,而這不是罕見的例外,而是制度差異。

處理方式很簡單:把姓氏視為選填,顯示時不要硬把兩個欄位串成固定格式。若介面上需要顯示敬稱或全名,缺乏某一欄時應該優雅地省略,而不是留下多餘的分隔符號或空白。

測試資料尤其應該涵蓋這種情況。只有單名的樣本會踩到字串拼接、欄位長度與報表排版等不同的程式路徑,比多準備十筆結構相同的樣本更有價值。

父稱、雙姓與連字符姓怎麼處理

有些文化使用父稱或母稱,把父親或母親的名字接在自己的名字之後;西班牙語系常見雙姓,父母各貢獻一個姓;英語與德語地區則常見連字符把兩個姓接在一起。這些結構不是「兩個姓選一個」,而是整體的一部分。

若系統只保留一個姓氏欄位,就必須決定保留哪一段,而任何選擇都會遺失資訊。比較好的做法是保留完整的原始字串,需要時再另外記錄顯示用的短名。連字符本身也是陷阱:半形連字號、全形連字號與波浪號在畫面上相似,卻是不相同的字元,比對前必須先統一。

稱謂也值得留意。同一種敬稱在不同語言適用的對象不同,硬把它當成性別或婚姻狀態的判別依據,通常會得到錯誤的結果。

變音符號會帶來哪些麻煩?

同一段姓名在不同輸入方式下可能產生不同的編碼:有的是單一預組合字元,有的是字母後面再加上組合符號。兩者在畫面上看起來一樣,位元組卻不同,於是比對失敗、索引產生重複項目、搜尋明明有這筆資料卻找不到。

長度限制也會出錯。有些語言的字元在儲存時佔用較多空間,若上限依位元組數計算,使用者會覺得明明沒打幾個字就被擋下;若上限依字元數計算,又可能在另一端被截斷。這是跨語言系統最常收到的客訴之一。

還有一個低級但常見的錯誤是把所有字母轉成大寫後再比對。某些語言的轉換規則與英文不同,一個字母在特定位置可能不會變成大寫,或轉換後改變了讀音,於是一筆本來相同的姓名被判定為不同。

給開發者:不要用兩個欄位裝全世界的姓名

  • 保留一個完整的顯示名稱欄位,另外才拆出姓與名供排序或稱呼使用。
  • 姓與名都允許留白,不要讓任何一個變成必填。
  • 比對與建索引前先做標準化的字元正規化,顯示時保留原始輸入。
  • 大小寫轉換依語言處理,不要一律套用英文規則。
  • 排序與分組使用當地語言規則,而不是用位元組順序。
  • 樣本庫要涵蓋單名、超長姓名、非拉丁字元與含變音符號的組合。

本站的身份產生器會依所選國家產生姓名,並與性別、稱謂保持一致;產生的內容只供測試與示範,不能用來冒充任何真人,也不代表任何真實的個人資料。想確認姓名欄位與其他欄位是否對得上,可以接著讀身份資料一致性。

音譯與字母轉換要注意什麼?

跨國系統經常需要把姓名從一個字母系統轉到另一個,例如把東亞姓名寫成拉丁字母。這種轉換沒有唯一答案:同一個音可能有多種通行寫法,護照、文件與個人偏好也可能各自不同,因此不要把轉換結果當成識別依據,也不要讓它覆蓋原始輸入。

若系統必須以轉換後的寫法顯示,建議同時保留原始與轉換兩種版本,並在搜尋時把兩者都納入比對。字元正規化與比對的細節,在地址驗證與正規化裡有更完整的說明。

同一個人的姓名為什麼在不同系統裡不一樣?

同一個人在護照、銀行與購物網站留下的姓名往往不同,而這些差異通常不是錯誤,而是輸入習慣與系統限制的結果。有的系統限制字數,把較長的名字截斷;有的不支援某些字元,改用近似的字母代替;有的把中間名省略,或在婚後只更新其中一部分。

當兩個系統要對照同一批人時,這些差異就變成雜訊。與其追求完全一致,不如先定義哪些差異可以接受:大小寫、變音符號的有無、連字符的寫法、姓與名的排列順序。把可接受的差異列成規則,比逐一比對字串可靠得多。

測試資料也應該刻意包含同一個人的多種寫法,用來驗證比對邏輯在合理差異下仍然找得到人,而在真正不同的姓名上不會誤判為同一人。當兩份名單要合併時,建議先定義以哪一份為主、衝突時保留哪一邊,並在結果上留下來源標記,否則同一個人會被當成兩筆,或反過來被錯誤合併成一筆。

下一步

檢查你的表單:姓氏是不是必填、長度上限怎麼算、比對前有沒有做正規化。三項都確認後,準備幾筆只有單名、含變音符號與非拉丁字元的樣本跑一遍,看看系統是優雅地接受,還是默默把資料截斷。

繼續閱讀

線上身份與測試資料產生器相關文章