國碼後保留了開頭的 0
出現率 ★★★★★這是 最高頻的錯誤。許多人會直接把本地號碼接在國碼後,但忘了去掉本地號碼開頭的 0。台灣手機本地是 09xx-xxx-xxx,加上國碼後要變 886 9xx-xxx-xxx,不能是 886 09xx。
貼上 0912 開頭的台灣號碼?輸入帶有 +、空格、括號的雜亂格式?這個工具幫您一鍵清洗成 E.164 國際標準,wa.me 連結直接可用。
E.164 是國際電信聯盟(ITU-T)制定的全球電話編號標準,WhatsApp、Telegram、Signal、Viber 等通訊軟體都採用這套規則。看完這節,您會知道每個數字代表什麼。
由 ITU 統一分配,全球唯一。台灣 886、香港 852、美國 1、英國 44。撥打國際電話時必須在前面加 + 號或 00。
在台灣,手機開頭 9 屬於行動通訊識別碼,市話 02 / 03 / 07 等屬於區域識別碼。國際格式需去掉開頭的 0。
由電信業者分配給每位用戶的專屬編號。一個國家內唯一,搭配前兩段組合後成為全球唯一識別碼。
記住這 4 條,從此再也不會把 WhatsApp 連結做錯
每個 E.164 號碼都以 1–3 位國碼開頭,不是寫在前面而是寫在最前面。在 wa.me 連結中只放數字,不加 + 號也不加 00。
在本國撥打的「幹線接續碼(Trunk Prefix)」例如 0,在國際格式中必須移除。這也是最常見的格式錯誤來源。
E.164 規定一個完整號碼(含國碼)總長度上限為 15 位。WhatsApp 嚴格遵守這個規則,超過長度就會被判定為無效。
在 wa.me 連結中,號碼只能是 0–9 的純數字。空格、橫線、括號等標點符號在轉換時都需要剝除乾淨。
ITU 在 1960 年代依照「世界區段(Zone)」分配國碼:歐洲 3 / 4 開頭、北美 1、非洲 2、南美 5、大洋洲與東亞為 6 / 8 / 9。台灣分到 88x 區段中的 6 號,因此是 886;日本是 81、韓國 82、香港 852。整套規則明列於 ITU-T 建議書 E.164。
涵蓋亞太、歐美、東南亞、拉美主要市場。每張卡都附正確格式範例,點擊即可一鍵複製國碼,秒貼到 wa.me 連結中。
找不到您要的國家?查閱 ITU 完整國碼清單 · 或往上滾動使用即時格式化工具。
統計超過 10 萬筆 用戶輸入後,這 5 個錯誤佔了將近 95% 的「點不開 wa.me 連結」原因。看完這節,您就跟 WhatsApp 號碼錯誤永遠告別。
這是 最高頻的錯誤。許多人會直接把本地號碼接在國碼後,但忘了去掉本地號碼開頭的 0。台灣手機本地是 09xx-xxx-xxx,加上國碼後要變 886 9xx-xxx-xxx,不能是 886 09xx。
+ 號或 00 是國際撥號的前導字元,只在「顯示」E.164 號碼時使用。但在 wa.me 網址路徑中必須是純數字,瀏覽器會自動把 + 號編碼為 %2B 導致連結損壞。
很多人想當然耳「對方也在台灣,應該不用國碼吧」。但 WhatsApp 連結是全球協議,沒有國碼就沒辦法判斷號碼歸屬哪個國家,會直接被判定為無效。
直接從 Excel、CRM 或通訊錄複製來的號碼幾乎都帶有格式符號。空格、橫線(-)、括號、點(.)都會讓 wa.me 解析失敗。瀏覽器會嘗試把空格編碼為 %20,反而把連結拆得更碎。
公司分機號(如 #101、ext.205)、區號備註(如 「(主)」「(副)」)這類額外資訊不能放進 wa.me 連結。WhatsApp 不認分機,整串都會被當成主號碼解析。
把號碼丟給上方的格式化工具,5 種錯誤全自動修正,省下您每次校對的時間。
把任意輸入的電話號碼正規化為 E.164 格式的範例代碼,覆蓋 JavaScript、Python、PHP。所有實作都符合 ITU-T E.164 規範,可直接整合到您的 CRM、客服系統或 API 後端。
// 將任意電話號碼正規化為 E.164 格式(純數字,不含 +) // 注意:此輕量版適用於 95% 國家,若需處理義大利(保留首位0)等特例請用 libphonenumber function toE164(input, defaultCountryCode = '886') { // 1. 移除所有非數字字元(+、空格、橫線、括號、點等) let digits = String(input || '').replace(/[^0-9]/g, ''); if (!digits) return null; // 2. 若以 00 開頭(國際撥號前綴),剝除 if (digits.startsWith('00') && digits.length > 4) { digits = digits.slice(2); } // 3. 判斷是否已含國碼(嘗試比對常見國碼) const knownCC = ['886', '852', '853', '971', '1', '7', '86', '81', '82', '44', '49']; let hasCC = false; for (const cc of knownCC) { if (digits.startsWith(cc) && digits.length > cc.length + 6) { digits = cc + digits.slice(cc.length).replace(/^0+/, ''); hasCC = true; break; } } // 4. 若沒含國碼,補上預設國碼並去除開頭 0 if (!hasCC) { digits = defaultCountryCode + digits.replace(/^0+/, ''); } // 5. E.164 規範總長度 7–15 位 if (digits.length < 7 || digits.length > 15) return null; return digits; } // === 使用範例 === toE164('0912-345-678'); // => '886912345678' toE164('+886 912 345 678'); // => '886912345678' toE164('(02) 2345 6789'); // => '886223456789' toE164('+1 415 555 0100', '1'); // => '14155550100' // 組裝 wa.me 連結 const phone = toE164('0912-345-678'); const waLink = `https://wa.me/${phone}?text=${encodeURIComponent('您好')}`;
import re from urllib.parse import quote def to_e164(raw, default_cc='886'): """將任意電話號碼正規化為 E.164 格式(純數字,不含 +)""" # 1. 移除所有非數字字元 digits = re.sub(r'\D', '', str(raw or '')) if not digits: return None # 2. 若以 00 開頭,剝除 if digits.startswith('00') and len(digits) > 4: digits = digits[2:] # 3. 嘗試判斷是否已含國碼 known_cc = ['886', '852', '853', '971', '1', '7', '86', '81', '82', '44', '49'] has_cc = False for cc in known_cc: if digits.startswith(cc) and len(digits) > len(cc) + 6: digits = cc + digits[len(cc):].lstrip('0') has_cc = True break # 4. 沒含國碼,補上預設並去除開頭 0 if not has_cc: digits = default_cc + digits.lstrip('0') # 5. 驗證總長度 if not (7 <= len(digits) <= 15): return None return digits # === 使用範例 === print(to_e164('0912-345-678')) # => 886912345678 print(to_e164('+886 912 345 678')) # => 886912345678 print(to_e164('(02) 2345 6789')) # => 886223456789 print(to_e164('+1-415-555-0100', '1')) # => 14155550100 # 組裝 wa.me 連結 phone = to_e164('0912-345-678') wa_link = f'https://wa.me/{phone}?text={quote("您好")}'
<?php /** * 將任意電話號碼正規化為 E.164 格式(純數字,不含 +) * * @param string $raw 原始輸入 * @param string $defaultCc 預設國碼(當輸入未含國碼時使用) * @return string|null E.164 格式字串或 null */ function toE164(string $raw, string $defaultCc = '886'): ?string { // 1. 移除所有非數字字元 $digits = preg_replace('/\D/', $raw); if ($digits === '') return null; // 2. 若以 00 開頭,剝除 if (str_starts_with($digits, '00') && strlen($digits) > 4) { $digits = substr($digits, 2); } // 3. 嘗試判斷是否已含國碼 $knownCc = ['886', '852', '853', '971', '1', '7', '86', '81', '82', '44', '49']; $hasCc = false; foreach ($knownCc as $cc) { if (str_starts_with($digits, $cc) && strlen($digits) > strlen($cc) + 6) { $local = ltrim(substr($digits, strlen($cc)), '0'); $digits = $cc . $local; $hasCc = true; break; } } // 4. 沒含國碼,補上預設並去除開頭 0 if (!$hasCc) { $digits = $defaultCc . ltrim($digits, '0'); } // 5. 驗證總長度(E.164 規範 7–15 位) $len = strlen($digits); if ($len < 7 || $len > 15) return null; return $digits; } // === 使用範例 === echo toE164('0912-345-678'); // => 886912345678 echo toE164('+886 912 345 678'); // => 886912345678 echo toE164('(02) 2345 6789'); // => 886223456789 echo toE164('+1 415 555 0100', '1'); // => 14155550100 // 組裝 wa.me 連結 $phone = toE164('0912-345-678'); $waLink = "https://wa.me/{$phone}?text=" . rawurlencode('您好');
處理電話號碼最常用的 4 條正規表達式,點擊按鈕即可複製
把空格、橫線、括號、+ 號、點等全部砍掉,只留下純數字。清洗字串的第一步。
把字串開頭的所有 0 一次清除。最常用於本地號碼 → 國際格式的轉換階段。
驗證一段字串是否為合法 E.164 格式:可選的 + 號搭配非 0 開頭,總長度落在 7-15 位。
從一大段雜亂文字中精準抽出台灣手機。涵蓋可選前綴 +886 / 886 / 0,加上主號 9 與 8 位數字。
若您的正式產品環境需要處理全球每個國家的詳細區碼、特殊號段、甚至可攜碼查詢,建議直接使用 Google 開源的 libphonenumber。它在 JS 端稱為 libphonenumber-js,Python 為 phonenumbers,PHP 則是 giggsey/libphonenumber-for-php。
8 個最多人問的問題,從基本概念到批次處理一次釐清。點開即可查看完整答案。
E.164 是國際電信聯盟 ITU-T 制定的全球電話編號標準。簡單講就是「國碼 + 本地號碼」的純數字格式,總長度 7 到 15 位,不含空格、橫線、括號等任何符號。
WhatsApp、Telegram、Signal、Viber 全部都採用這套標準。當您看到 https://wa.me/886912345678 這條連結,斜線後的 886912345678 就是合法的 E.164 號碼。
那個 0 叫做「幹線接續碼(Trunk Prefix)」,是本國內撥打才需要的,用來告訴交換機「接下來這串是長途/行動號碼」。國際撥號時電信系統會自動處理跨國轉接,就不需要這個 0 了。
所以台灣手機 0912-345-678,國際格式就是 +886 912 345 678,那個 0 變成了國碼 886。日本、韓國、英國、澳洲、德國全部都採用「國內加 0、國際去 0」的規則。
不要加。wa.me 路徑只能是純數字。+ 號只是「給人看」的顯示符號,不是號碼的一部分。
https://wa.me/886912345678https://wa.me/+886912345678(瀏覽器會把 + 編碼為 %2B 導致連結損壞)給用戶看時可以顯示 +886 912 345 678,但實際 href 屬性裡只能放純數字。
1000 筆瞬間完成,5000 筆也沒問題。本工具是純前端 JavaScript 執行,計算速度只受您的瀏覽器與裝置效能影響。
安全性方面,所有處理在您的瀏覽器內完成:
技術上可以,但前提是該市話號碼已註冊 WhatsApp Business 帳號。許多公司客服電話就是用市話號碼註冊 WhatsApp Business 來收客戶訊息。
格式上同樣去掉本地撥號的 0,把區碼直接接國碼:
E.164 標準規定含國碼總長度 7 到 15 位,但實際上每個國家的本地號碼長度有自己的規則。常見的:
本頁的工具會自動依照您選的國家驗證長度,如果太短或太長會即時提醒。
三步驟搞定:
下載的 CSV 含 5 欄:原始輸入、標準格式、國碼、本地號碼、狀態。可直接匯回 Excel 對應您的客戶名單。
當格式無誤時,wa.me 顯示「電話號碼無效」通常是對方那個號碼沒有註冊 WhatsApp 帳號。可能原因:
建議先用其他方式確認對方有在用 WhatsApp,或直接傳訊息問對方。
您已經有正確的 E.164 號碼了,下一步用「WhatsApp 連結產生器」加上預填訊息,就能變成可直接放在官網、IG Bio、名片 QR Code 上的 wa.me 點擊連結。整套流程不到 30 秒。
四個讓您 WhatsApp 用得更順手的免費工具