
在處理文書、資料合併、排版或比對時,你可能遇過「看起來像空格但就是怪」的情況。常見的元凶之一就是這個:非斷行空白符(Non-breaking Space),也就是 Unicode 的 U+00A0。
這個符號外觀跟一般空格一模一樣,但本質上完全不同,會導致一些很難察覺但致命的錯誤。
它到底是什麼?
非斷行空白是一種「看起來像空格,但不會自動換行」的特殊字元。通常會出現在數字和單位之間(像是 100 kg),用來讓這兩個字不要被換行分開。
兩種空白的差別:
- 一般空格:U+0020,正常空格字元,系統處理時會當成空白間隔。
- 非斷行空白:U+00A0,看起來一樣,但被視為文字的一部分,不會被自動換行,也不容易被條件比對。
它怎麼出現的?
這種符號常常不是你手動輸入的,而是透過各種轉換、複製、匯出過程「偷偷混進來」。
常見來源包括:
- 從 Word、Google Docs 複製貼上文字
- 複製網頁內容時包含了 符號
- 使用某些輸入法(特別是中文輸入法)自動產生
- 從資料庫或報表系統匯出時直接帶入
特別說明:
有些報表系統(像是 ERP、CRM、學籍系統等)在匯出 CSV、Excel、XML 或 JSON 檔案時,為了排版或格式統一,會把欄位間的空格轉成非斷行空白符。這對人類來說沒差,但在程式或文件比對時就會出錯。
例如:
在匯出資料中,姓名欄位後方自動補了一個 \u00A0,導致合併時出現多餘間距或比對失敗。
原本以為的空格其實是非斷行空白,造成資料整理錯位或 Excel 函數失效。
會造成的問題
- 因為非斷行空白不是一般空格,會導致很多「看不見、卻出錯」的情況,例如:
- Word 自動編號、格式跑掉
- Excel 比對失敗、合併錯位、VLOOKUP 無法命中
- 程式比對字串時出錯(尤其是後端欄位比對或 API 比對)
- 文件段落排版出現異常無法自動換行
解法:如何找出並清除?
👉 在 Word:
Ctrl + H → 尋找輸入 ^s → 取代為一般空格(或留空)
👉 在 Google Docs:
手動複製問題空格 → 貼到「尋找」欄 → 取代為正常空格
👉 在 Excel:
使用 SUBSTITUTE(A1,CHAR(160)," ") 把非斷行空白轉換成正常空格
👉 在程式(Python 範例):
text = text.replace('\u00A0', ' ')
或用正規表達式:
import re
text = re.sub(r'[\u00A0]', ' ', text)
小結
非斷行空白符(U+00A0)是處理文字時常見的陷阱,尤其在資料匯出、系統整合、格式轉換的過程中,經常不自覺地出現。如果你有從資料庫、報表系統匯出資料的需求,建議在後續處理步驟中加入「清除非斷行空白」的流程,能避免很多潛在錯誤。
Tags
電腦工具