JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » JDBC/SQL討論區 » MySQL  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to topicthreaded modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 請問 如果在資料庫中原始資料就已經是亂碼的話 還有救嗎?
flanshuang





發文: 67
積分: 0
於 2010-07-05 14:04 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
小弟今天被授予任務 要想辦法把某資料庫的TABLE資料 移到自己的備用資料庫作比對用

但是上面的人要我先解決原始資料庫裡面亂碼的問題(原始資料) 亂碼樣式如右: ®õ¤s½Y¥Û±Ð·|

預設編碼為: CHARSET=utf8

請問在原始資料已經是這種情況下 有辦法把亂碼轉成繁體中文嗎? 懇請前輩指導 感謝


reply to postreply to post
作者 Re:請問 如果在資料庫中原始資料就已經是亂碼的話 還有救嗎? [Re:flanshuang]
mylee





發文: 764
積分: 1
於 2010-07-05 15:01 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
flanshuang wrote:
小弟今天被授予任務 要想辦法把某資料庫的TABLE資料 移到自己的備用資料庫作比對用

但是上面的人要我先解決原始資料庫裡面亂碼的問題(原始資料) 亂碼樣式如右: ®õ¤s½Y¥Û±Ð·|

預設編碼為: CHARSET=utf8

請問在原始資料已經是這種情況下 有辦法把亂碼轉成繁體中文嗎? 懇請前輩指導 感謝


泰山磐石教會?


reply to postreply to post
作者 Re:請問 如果在資料庫中原始資料就已經是亂碼的話 還有救嗎? [Re:flanshuang]
ken117

小白熊



發文: 189
積分: 3
於 2010-07-05 16:31 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
flanshuang wrote:
小弟今天被授予任務 要想辦法把某資料庫的TABLE資料 移到自己的備用資料庫作比對用

但是上面的人要我先解決原始資料庫裡面亂碼的問題(原始資料) 亂碼樣式如右: ®õ¤s½Y¥Û±Ð·|

預設編碼為: CHARSET=utf8

請問在原始資料已經是這種情況下 有辦法把亂碼轉成繁體中文嗎? 懇請前輩指導 感謝


只要不是變成問號,找對編碼,就可以轉回來

1
2
3
4
5
6
7
        for (String en : Charset.availableCharsets().keySet()) {
            try {
                byte[] bs = "®õ¤s½Y¥Û±Ð·|".getBytes(en);
                System.out.println(en + "=" + new String(bs, "big5"));
            } catch (Exception e) {
            }
        }


COMPOUND_TEXT=泰山磐石教會
ISO-8859-1=泰山磐石教會
windows-1252=泰山磐石教會

有中的編碼,就這三個,八成是big5被存進ISO-8859-1


reply to postreply to post
作者 Re:請問 如果在資料庫中原始資料就已經是亂碼的話 還有救嗎? [Re:ken117]
cowbayal98





發文: 84
積分: 0
於 2010-07-05 18:57 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
第一次看到上面的api , 於是手養拿來自己玩玩看....
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.nio.charset.*;
 
public class tt
{
 public static void main (String args[]) 
 {   
   try
   {
    String s = "泰山磐石教會";
    byte[] bs = s.getBytes("big5");
    System.out.println(new String(bs, "ISO-8859-1"));
   }
   catch (Exception e) {
   }
 }
}


結果我傳出來的答案是???s?Y??±?·|
....
摁...是怎麼一回事呢? 為什麼我沒有辦法得到®õ¤s½Y¥Û±Ð·|的值

是不是跟我的執行環境有關係??
所以無法顯示那些特殊字元??


cowbayal98 edited on 2010-07-05 19:42
reply to postreply to post
新手上路,煩請指正 = ="
 新手上路,煩請指正 = ="
  新手上路,煩請指正 = ="
作者 Re:請問 如果在資料庫中原始資料就已經是亂碼的話 還有救嗎? [Re:cowbayal98]
caterpillar

良葛格

版主

發文: 2613
積分: 70
於 2010-07-05 22:41 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
如果你真的要用 Console 來摸擬出上面的結果的話:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.io.*; 
public class Main
{
 public static void main (String args[]) 
 {   
   try
   {
    // 模擬資料庫預設編碼 UTF-8
    System.setOut(new PrintStream(new File("a.txt"), "UTF-8"));
    
    // 你的編輯器是 Big5,編譯時也用 Big5
    String s = "泰山磐石教會";
    byte[] bs = s.getBytes("Big5");
    
    // 模擬接收請求參數時編碼是用 ISO-8859-1
    String param = new String(bs, "ISO-8859-1");
    
    // 模擬寫入資料庫
    System.out.println(param);
   }
   catch (Exception e) {
   }
 }
}


用可以檢視 UTF-8 的編輯器去看 a.txt,就會出現 ®õ¤s½Y¥Û±Ð·|


reply to postreply to post
良葛格學習筆記
作者 Re:請問 如果在資料庫中原始資料就已經是亂碼的話 還有救嗎? [Re:caterpillar]
cowbayal98





發文: 84
積分: 0
於 2010-07-06 00:32 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
caterpillar wrote:
如果你真的要用 Console 來摸擬出上面的結果的話:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.io.*; 
public class Main
{
 public static void main (String args[]) 
 {   
   try
   {
    // 模擬資料庫預設編碼 UTF-8
    System.setOut(new PrintStream(new File("a.txt"), "UTF-8"));
    
    // 你的編輯器是 Big5,編譯時也用 Big5
    String s = "泰山磐石教會";
    byte[] bs = s.getBytes("Big5");
    
    // 模擬接收請求參數時編碼是用 ISO-8859-1
    String param = new String(bs, "ISO-8859-1");
    
    // 模擬寫入資料庫
    System.out.println(param);
   }
   catch (Exception e) {
   }
 }
}


用可以檢視 UTF-8 的編輯器去看 a.txt,就會出現 ®õ¤s½Y¥Û±Ð·|


又學到了新東西 !!
改成
System.setOut(new PrintStream(new File("a.txt"), "Big5"));
結果我的a.txt裡面果然還是顯示???s?Y??±?·|
又看了一下我的命令提示字元 , 果然Big5的字碼是無法顯示那些特殊符號的.

結論....我好像是問了一個蠢問題了 XD


reply to postreply to post
新手上路,煩請指正 = ="
 新手上路,煩請指正 = ="
  新手上路,煩請指正 = ="
» JWorld@TW »  JDBC/SQL討論區 » MySQL

reply to topicthreaded modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8