問題描述
讀取MySQL的數據,然後使用StringBuilder
進行連接,但在運行時發現每次append
到一個字段的時候StringBuilder
就會被清空,最後只剩後邊的幾個字段。
假如讀出了四個字段:
字段名稱 | 值 |
---|---|
id | 10150145806225128 |
姓名 | 張三 |
消息 | 謝謝大家支持。 |
時間 | 2016-06-13 19:09:47 |
正確運行的話,應該最終輸出:
10150145806225128;張三;謝謝大家支持。;2016-06-13 19:09:47;0
但實際的輸出過程是:
10150145806225128
10150145806225128;張三
10150145806225128;張三;謝謝大家支持。
2016-06-13 19:09:47
最終:2016-06-13 19:09:47
可以看到在append
完消息字段後,再append
時間的時候StringBuilder
被清空了。
如果append
的時候跳過消息字段,也沒有任何問題
10150145806225128
10150145806225128;張三
10150145806225128;張三;2016-06-13 19:09:47
最終:10150145806225128;張三;2016-06-13 19:09:47
可能的解決方案
(1)首先考慮了StringBuilder
長度限制的問題,但根據以往經驗應該不是,因爲沒有限制length
參數,而且所有字段數據加起來也不長。
(2)考慮了編碼的影響,發現也沒什麼問題,從數據庫到程序都使用了utf8
,在程序里加了強制轉換也依然沒什麼用處。
(3)懷疑是字段內容的問題,該字段爲消息字段,內容爲中文,如果把內容直接複製出來,在程序裏直接append
沒有任何問題,但是如果從數據庫裏讀再append
就會出現清空的現象。
感覺應該是讀取數據庫的時候在字段內容末尾加了什麼奇怪的東西,加了個trim()
試了下,竟然成功了……
10150145806225128
10150145806225128;張三
10150145806225128;張三;謝謝大家支持。
10150145806225128;張三;謝謝大家支持。;2016-06-13 19:09:47
最終:10150145806225128;張三;謝謝大家支持。;2016-06-13 19:09:47
總結
So,就這麼解決了,下次讀取數據庫裏文本的時候,記得trim()一下……