故障排查之找出隱藏的真兇

最近的一起生產故障中產品經理反映自己添加的超鏈接不能生效。鏈接內容如下:

您好!XX客服系統很高興爲您服務!歡迎進入<a href="https://discount.csdn.com/">打折專區</a>購買商品!

沒有發現異常,於是就甩鍋給前端同學,前端同學排查後發現的確不能正確解析鏈接,經常嘗試發現,a和href之間的空格不正常,刪除後用鍵盤輸入空格,便可以正常解析鏈接。於是,鍋還是甩回到我這裏,我就推斷應該是存在特殊字符導致鏈接失效,將鏈接內容拷貝到Notepad++中,選中"視圖-顯示符號-顯示所有符號",顯示如下:

a和href之間存在特殊字符

將a和href之間的內容刪除,用鍵盤輸入空格後,顯示如下:

a和href之間的內容是空格

細心的同學會發現此時a和href之間出現一個紅點,代表a和href之間是空格(ASCII碼爲32),a和href之間必須是ASCII碼爲32的空格才能將對應的內容解析爲超鏈接

現在已經確定a和href之間的內容不是鍵盤輸入的空格了,到底是什麼特殊字符呢。

把這個特殊字符拷貝到IDE中測試:

char c = ' ';
System.out.println((int) c);

結果輸出160,表示該字符對應的Unicode碼(java中char對應的是Unicode碼,佔用兩個字節)爲\u00A0(十六進制,對應的十進制爲160),其實該字符對應的是Html中的空格:

&nbsp;

溫馨提示:

以後遇到解析失敗的文本,應先在Notepad++(視圖-顯示符號-顯示所有符號)上查看,若發現特殊字符,則通過編程工具計算其對應的Unicode碼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章