非斷行空白符(U+00A0)


 

在處理文書、資料合併、排版或比對時,你可能遇過「看起來像空格但就是怪」的情況。常見的元凶之一就是這個:非斷行空白符(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)是處理文字時常見的陷阱,尤其在資料匯出、系統整合、格式轉換的過程中,經常不自覺地出現。如果你有從資料庫、報表系統匯出資料的需求,建議在後續處理步驟中加入「清除非斷行空白」的流程,能避免很多潛在錯誤。

小泉

喜愛用文字說明自己眼中所見的一切

較新的 較舊

نموذج الاتصال