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