Re: [J2SE] 請問系統安裝的JRE顯示中文的編碼問題
之前問題擱著幾天未解
昨天又開始研究,不過似乎還是有問題
因此再來請教版友是否有其他方法
我用Swing的choose選擇中文檔案後(部分程式碼略)
JFileChooser chooser = new JFileChooser(System.getProperty("user.home"));
File[] sf = chooser.getSelectedFiles();
//網路上找到的轉碼方式
String unicode = sf[0].getName();
byte[] sysec = unicode.getBytes(System.getProperty("file.encoding"));
byte[] utf8 =
new String(sysec,System.getProperty("file.encoding")).getBytes("UTF-8");
String target = new String(utf8);
最後我只是要把target這個字串寫進資料庫(資料庫設定皆為UTF-8)
不過資料庫出現的中文卻有部分字元為??
請問各位這裡是否有哪個環節造成這樣的轉碼失誤?
*******************************************
最新測試狀況
其實我後端是用某個學術單位的特殊資料庫metaServer
我自己用postgre測試註冊這檔名後發現
根本不需要這修轉碼~chooser.getSelectedFiles拿到的string直接可以正常寫入
問題可能在這個metaServer,他其實是在postgreSQL資料庫上面加上
一層介面,所以我等於用他的client API跟他的metaServer service連線
這個metaServer在將我的查詢SQL語法轉成PostgreSQL裡面相對應的表格名稱
送出查詢語法(這部分似乎是ODBC連線)
圖解:
sql:INSERT INTO metadata(name) VALUES ('"+target+"')
metaServer Client: execute(sql)
--------------------------------------
http
--------------------------------------
metaServer Service:tran(sql)
Tsql:INSERT INTO dir16(user:name) VALUES ('"+target+"')
---------------------------------------
ODBC
---------------------------------------
PostgreSQL:execute(Tsql)
這樣的架構下,如果jre的編碼是UTF-8的環境下
中文檔名不需處理就可以順利寫入
但是jre如果是MS950,就會出現錯誤
我試過下java -Dfile.encoding=UTF-8 testUpload
這樣是可以順利註冊無誤
不過實際環境是JWS方式執行,我無法讓使用者下載我的class之後更改jre的編碼
(或是我的jnlp可以對user啟用jre的編碼作設定?)
所以似乎得在我的程式裡面對choose取得的中文檔名作處理~~
這就是目前沒法解決的部分
推
12/08 19:16, , 1F
12/08 19:16, 1F
推
12/08 19:29, , 2F
12/08 19:29, 2F
推
12/08 23:42, , 3F
12/08 23:42, 3F
※ 編輯: jimshsu 來自: 220.136.87.45 (12/09 11:26)
→
12/10 10:24, , 4F
12/10 10:24, 4F
討論串 (同標題文章)