讀寫檔案時遇到的問題Part.1

來談談我剛剛遇到的讀寫檔問題



這一切的起因於有一團很大量的資料需要輸入到SQL裡
但是用手一條一條Key會死人
所以我寫了一個JAVA小程式幫我生成SQL query

原本一切都還算順利
query也順論的生出來了
但是實際放進去跑的時候
出現了錯誤:
Error Code: 1054. Unknown column 'XXXX' in 'field list'

原本我以為是我的query生成錯誤
但是我用手重新輸入卻可以執行
不過在確認格式無誤後
只好用debug來看看字串裡面的內容

然後,我看到在第一個字串的開頭出現empty char
所以我八成有個底:是'\0'
不過那是怎麼產生的呢?

於是我又爬了一些文
最後找到這樣的解釋:

BOM在UTF-8中,它只用來標示一個UTF-8的檔案,而不用來說明位元組順序。
在類Unix系統(大量使用文字檔案,用於檔案格式,用於行程間通訊)中,這種作法則不被建議採用。因為它會妨礙到如解譯器腳本開頭的Shebang等的一些重要的碼的正確處理。

原來問題出現在我的input text
我是使用notepad++來編輯貼上
但是在轉換編碼模式的時候
卻選擇UTF-8而不是UTF-8(無BOM)
搞了半天都是我自己的問題
在此紀錄作為警惕

參考:
http://en.wikipedia.org/wiki/Zero-width_no-break_space
https://www.ptt.cc/bbs/java/M.1404782025.A.41D.html

TAG: \0, \ufeff, bom, io, utf-8, zero-width non-breaking space, ZWNBSP

留言

這個網誌中的熱門文章

[Javascript] 利用Google Calendar api 存取 Google 行事曆

[滑鼠] 羅技G402 換微動