客戶端使用java
服務端使用C#
客戶端數據庫SqlServer2000編碼簡體中文GBK
服務端數據庫SqlServer2008編碼SQL_Latin1_General_CP1_CI_AS
客戶端取出數據使用new String("消息".getBytes("GBK"),"UTF-8");進行轉換
發送的時候使用PrintWriter pw = new PrintWriter(socket.getOutputStream);
服務端只接收UTF-8編碼顯示為亂碼。
后來參考資料,才明白new String("消息".getBytes("GBK"),"UTF-8");這種方式只是在JVM內部轉換,那么一旦涉及到流比如數據庫、文件等就要使用java IO進行轉換。也就是說JVM內部編碼unicode和外部os編碼的轉換。
使用下面方式就沒有問題了
字符流方式發送
PrintWriter pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream),"UTF-8")),false);
字節流方式發送
PrintStream ps = new PrintStream(socket.getOutputStream(),false,"UTF-8");
false表示手動pw.flush();
posted on 2010-03-18 21:18
朔望魔刃 閱讀(1566)
評論(0) 編輯 收藏 所屬分類:
java