目前 OSM 上的電話號碼及分機格式都亂成一鍋粥了,趁熱喝了吧。(悲
亟待討論,想聽聽大家意見。
背景資訊
參考OSM wiki 的 Key:phone 電話格式説明,目前常見格式有幾種:
- 北美式 NANP:
+1-905-688-5550x3369or+1-905-688-5550 x3369 - E.123:
+1-978-750-1900 ext. 4309 - DIN 5008:
+49 123 4567-1234(只有德國)。
台灣現況,特別是分機 一個一個一個 的不同啊:
目前資料裡分機的寫法混雜,已知有 ~、,、#、ext 這幾種,尚未統一。
# 是台灣日常生活中常見的分機寫法,或許可以以此為主。
寫了一個正規化腳本,目前跑出來的結果如截圖,可以看到現有資料裡有多種分機格式。
例
+886 (2) 2706-5995x6 +886 4 2873-6548#101、107 +886 2 2883 2130ext106
討論主題
需要討論正規化的問題大致上有二:
一、號碼格式
號碼本體要用哪種分隔方式?
- NANP/ RFC 3966 變體:
+886-2-1234-5678(加連字號(dashes)) - ITU E.123:
+886 2 1234 5678(空白)
二、分機格式
- 直接接受
#— 民間慣用,不強制轉換正確格式 - 轉換成某個統一格式 — 但要選哪個?
- E.123 (
+886 2 2NNN NNNN ext. NNN) - NANP (
+886-2-2NNN-NNNN xNNN) - RFC3966 (
+886-2-2NNN-NNNN;ext=NNN)
- E.123 (
+886-3-8771024;ext=13
不過;ext=NNN有分號衝突的問題,解析成兩支電話,皂化弄人啊
PS-RFC3966 加 backslash 也不是好的解決方案,
+886-3-8771024;ext=13大多數 APP 無法辨認
- 直接跳過分機?
- 只正規化號碼本體,跳過分機 —
#,~ext這類字元整個略過,只處理主號碼 - 用號碼長度過濾 — 主號碼至少六碼,靠長度區分主號與分機
- 只正規化號碼本體,跳過分機 —
延伸閲讀
—— 徇眾要求,已投稿日記
