作者cyclone350 (老子我最神)
看板java
標題[工具] 1個byte的影響
時間Fri Dec 18 20:34:34 2015
是這樣的,昨天開發的程式出現了一個 bug
在 local 端手動測試功能完全正常
但是在 staging 環境手動測試與我自己寫的整合測試結果都是不正常的 (fail)
結果我 debug 一整天
查了相關文件,看了教學 blog,查詢 Stack Overflow
仍沒有任何收穫
最後查到原因了
程式碼的有一行看起來像這樣
this.xbox = "todayIsFriday";
我印出 xbox 的 log 也是 "todayIsFriday"
但實際上 I 與 s 之間似乎夾雜了一個雜訊 (也許是一個byte)
也就是說,如果你把指標移到 I 跟 s 中間,並且按下 ←,這個雜訊就會被消除,
程式就可以正常運作了
會發現這個原因是因為我剛好複製了這個字串
然後又讓 System.out.print 去印出來,才看到亂碼並發現這件事
(就算用 log 間接印出在 console 仍看不出亂碼)
請問這種 case 有辦法用工具檢查出來嗎?
還是各位有甚麼撇步可以快速找到亂碼?
還是,這是電腦問題? (我電腦曾經突然重開機讓後編輯中的檔案整個死掉)
該換電腦了嗎? 我早就想換了。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.193.192.133
※ 文章網址: https://webptt.com/m.aspx?n=bbs/java/M.1450442076.A.235.html
1F:→ qrtt1: 版本控制工具的 diff 沒有顯示出來? 12/18 21:15
2F:→ cyclone350: diff 沒試過耶,這是我本機剛新開發的功能。 12/18 21:29
3F:→ cyclone350: 晚點去看看 12/18 21:30
我用的版控工具是 SourceTree, diff 檔案看不出來
然後有件事情我說錯了
剛剛仔細測試後發現
System.out.print 也看不出來,是用 URI Encoding 才看得出來
因為用的 lib 要在系統顯示出完整內容是直接用 print(),
所以誤以為沒處理就直接 print
以下是程式碼
http://i.imgur.com/PyionkB.jpg
程式結果
http://i.imgur.com/qVHzfGd.jpg
另外
記事本 看不出來
notepad++ 看不出來
sourceTree diff 看不出來
gmail 信件 看不出來
eclipse 看不出來
STS 看不出來
剛剛發現,貼到 PTT 就看得出來了,s會被吃掉
※ 編輯: cyclone350 (123.193.192.133), 12/18/2015 23:07:06
4F:推 LaPass: 你用charAt然後轉成int一個一個字元印出來看看,我猜是非 12/18 23:35
5F:→ LaPass: 顯示字元 12/18 23:35
6F:→ ssccg: EFBBBF,不就UTF-8的BOM 12/19 00:03
7F:→ fgh81113: 有點妙 你怎麼生出那個s的 12/19 13:34
8F:推 MephistoH: 這個我有遇過...不過我那個是換行符號..情形類似 12/21 13:31
9F:推 gmoz: VT100 ? 12/21 16:23
10F:→ cyclone350: 這個東西是甚麼我並不在意,可能是 ssccg 說的 BOM 12/23 22:02
11F:→ cyclone350: 也許是複製貼上時貼到的,但是我總不能跟大家說: 12/23 22:03
12F:→ cyclone350: [嘿,請大家在寫程式時隨時按左右來檢查有沒有奇怪字 12/23 22:04
13F:→ cyclone350: 元喔~ ] 12/23 22:05
14F:推 now99: 轉hex字串檢查 12/26 09:48
15F:→ FantasyRyu: 貼到PTT檢查是哪招 XDDDDD 厲害 12/27 10:02