語言為java 開發工具為Eclipse
我的檔案編碼是utf-8-bom
專案環境是ms950
寫進去db要big5
是否有些文字會變成問號沒辦法寫進去db(像"堃")
但如果我把專案環境改成utf-8
就可以正常印在console中不會有問號
但如果改成ms950
部分字變成問號(通常是難字變成問號)
在專案環境為ms950情況下
請問有方法可以在console顯示出完整檔案內容嗎?
附上以下連結為測試程式與txt檔可以試試看
https://drive.google.com/file/d/1Q7eXp51GujrQyTds6Gs_Hqe7LItKRtAp/view?usp=sharing
https://drive.google.com/file/d/1daQoa0fsHRoqm-ove1KpMRmZogLHO9lh/view?usp=sharing
建議把內容encode成unicode ( ♠這種格式) 再存進資料庫,從資料庫讀出後也再decode回來即可,這樣就不會冒出 ??? 的狀況
一般你得先對儲存容器下手。
big5本身包含的字不多。所以你容器(db)就用big5的話。本身就已經沒救了。
雖然還有 japhenchen 說的方法。但那不是治本的問題。也會造成其它問題的存在。(如搜尋、相似值)
其實只要宣告db庫是iso編碼(latin1)。也是可以達到同樣的效果。
一般建議你還是做一下大改變。先將資料庫的編碼宣告改成utf8。就可以一次解決問題了。
我目前使用的DB環境和USER前端都是BIG5
如要改成unicode第一步就是動DB,這個不難,一天以內可以搞定
但是用戶的前端較難搞,部分沒有UNICOE支援,有的話要改程式也是很大負擔,沒有一年搞不完,目前的規劃就是:DB使用BIG5,重寫新用戶端使用uncode+big5(BIG5/UTF-8雙軌),前端採用HTML+CSS+JAVA,後端不變,改成CGI方式作業,程式邏輯不用動,只需動輸入的部分,等更換掉所有的舊的客戶端後,在全部切到UTF-8,預計要2年完成(已完成報表、基本日常作業)。
而BIG5沒有的字則系統寫一個對照表由用戶維護,使用時用#&12345;方式輸入,由前端程式轉換(其實不用管,瀏覽器會自動處理)
為什麼不要全部重寫比較快?
目前用運作中的系統,不能停下來等開發,也不能停止維護舊程式!
重點是:20多年的企業(程式)邏輯沒人可以搞清楚,上萬支程式也理不清楚有沒有用,必須讓舊程式繼續運作。