特殊不可見字元導致excel資料校驗出錯

2021-10-10 11:20:45 字數 823 閱讀 6015

昨天晚上,突然有運營過來說,匯入excel的時候,校驗資料時有乙個**號碼一直報錯:**號碼不正確,當時百思不得其解,但由於時間太晚,所以放到第二天再來處理。

一大早跑到公司,第一件事就是修復這個bug,最開始以為是空格的原因,因為**號碼是沒有做去空格處理的,加上!立馬加上!但是測試下來依舊是報錯,沒辦法,只能找到後端一起解決問題,後端馬上發現了問題,**號碼沒有通過正則校驗:^(1)\d$。

於是先手動輸入這個號碼進行校驗,發現是可以通過的,那麼馬上就想到了可能是資料問題,然後去傳入的引數處複製該號碼,發現也能通過校驗,於是就認定了,鍋肯定是後端的,甩就完事了。

後端最開始以為是傳入過程中不小心加入了空格,導致正則校驗失敗,於是加上去除空格,但是發現還是不行,而且發現只有這個excel的某個單元格輸入任何號碼都報錯,於是我又去引數處取值,這時將引號也取進去,然後刪除引號,進行校驗,無法通過!

這時就意識到是這個資料出現了問題,於是對11111111111進行unicode編碼,結果為

‭11

1111

1111

1

問題出現了,轉碼後的長度為12,而且暴露出了乙個奇怪的東西:‭。

問題出現之後,就是查資料了,結果發現在某些作業系統或者某些版本的excel下,會加上某些不可見的編碼,這也是為什麼前端和後端列印的時候都沒列印出來,也沒發現異常,只需對此字串處理刪除特殊字元即可

str=str.

tostring()

.replace

(/[\u200b-\u200f\ufeff\u202a-\u202e]/g,""

)

EXCEL中的神秘的不可見字元

因處理資料,需要把單位名稱前的空格字元去年,結果只有幾條記錄的去掉了,大部分記錄的單位名稱欄位前的空格沒有去掉。先看下圖 第1列為原資料,第2列為應用公式trim去空格,第3列用substitue函式替換空格 選中a列第3行 山東路 前面的空格 進行替換操作,把這些未知的字元替換成b 黃色記錄的4處...

不可見的unicode字元

專案中執行到 如 x x.encode encoding 報錯 latin 1 codec can t encode character u u202d in position 0 ordinal not in range 256 可見是編碼問題。報錯資訊顯示這個x字串中含有異常的字元u u202d...

Vim中顯示不可見字元

在linux中,cat a file可以把檔案中的所有 可見的和不可見的字元 都顯示出來,在vim中,如何將不可見字元也顯示出來呢?當然,如果只是想在vim中檢視的話,可以這樣 cat a在vim中呼叫cat轉換顯示。這樣的做法不便於編輯,其實vim本身是可以設定顯示不可見字元的。只需要 set i...