iT邦幫忙

0

utf-8 big5編碼問題

語言為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

衝碼問題?
froce iT邦大師 1 級 ‧ 2020-11-03 21:38:00 檢舉
啊你db是big5就只能存big5啊...
堃就不在big5的字碼表裡,你只能造字。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1
japhenchen
iT邦超人 1 級 ‧ 2020-11-04 08:55:14

建議把內容encode成unicode ( ♠這種格式) 再存進資料庫,從資料庫讀出後也再decode回來即可,這樣就不會冒出 ??? 的狀況

在下也有同樣的問題,但解法應該不像上面這樣...
(一) powershell 的批次檔 (test.ps1),內容如下
Add-Content D:\test\A.txt "文章" -Encoding utf8
執行後, 發現 A.txt 是 ?? 亂碼。
(二) 但是在 powershell console 下,直接下此單一行命令
Add-Content D:\test\A.txt "文章" -Encoding utf8
卻發現 A.txt 是 OK。 (檔案首行是 "文章" 2個中文字)

0

一般你得先對儲存容器下手。
big5本身包含的字不多。所以你容器(db)就用big5的話。本身就已經沒救了。

雖然還有 japhenchen 說的方法。但那不是治本的問題。也會造成其它問題的存在。(如搜尋、相似值)

其實只要宣告db庫是iso編碼(latin1)。也是可以達到同樣的效果。
一般建議你還是做一下大改變。先將資料庫的編碼宣告改成utf8。就可以一次解決問題了。

0
chuway
iT邦新手 2 級 ‧ 2022-06-20 12:26:39

我目前使用的DB環境和USER前端都是BIG5
如要改成unicode第一步就是動DB,這個不難,一天以內可以搞定
但是用戶的前端較難搞,部分沒有UNICOE支援,有的話要改程式也是很大負擔,沒有一年搞不完,目前的規劃就是:DB使用BIG5,重寫新用戶端使用uncode+big5(BIG5/UTF-8雙軌),前端採用HTML+CSS+JAVA,後端不變,改成CGI方式作業,程式邏輯不用動,只需動輸入的部分,等更換掉所有的舊的客戶端後,在全部切到UTF-8,預計要2年完成(已完成報表、基本日常作業)。
而BIG5沒有的字則系統寫一個對照表由用戶維護,使用時用#&12345;方式輸入,由前端程式轉換(其實不用管,瀏覽器會自動處理)

為什麼不要全部重寫比較快?
目前用運作中的系統,不能停下來等開發,也不能停止維護舊程式!
重點是:20多年的企業(程式)邏輯沒人可以搞清楚,上萬支程式也理不清楚有沒有用,必須讓舊程式繼續運作。

我要發表回答

立即登入回答