讀寫檔案時遇到的問題Part.1
來談談我剛剛遇到的讀寫檔問題
這一切的起因於有一團很大量的資料需要輸入到SQL裡
但是用手一條一條Key會死人
所以我寫了一個JAVA小程式幫我生成SQL query
原本一切都還算順利
query也順論的生出來了
但是實際放進去跑的時候
出現了錯誤:
原本我以為是我的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
這一切的起因於有一團很大量的資料需要輸入到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
留言
張貼留言