隨筆-95  評(píng)論-31  文章-10  trackbacks-0

          客戶(hù)端使用java
          服務(wù)端使用C#

          客戶(hù)端數(shù)據(jù)庫(kù)SqlServer2000編碼簡(jiǎn)體中文GBK
          服務(wù)端數(shù)據(jù)庫(kù)SqlServer2008編碼SQL_Latin1_General_CP1_CI_AS

          客戶(hù)端取出數(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 朔望魔刃 閱讀(1568) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): java
          主站蜘蛛池模板: 海林市| 邳州市| 揭阳市| 北海市| 抚宁县| 西华县| 广汉市| 子洲县| 易门县| 察隅县| 隆林| 昌宁县| 宁陕县| 通许县| 漳平市| 娄烦县| 马关县| 遂平县| 买车| 郴州市| 罗城| 滕州市| 科技| 资源县| 宁河县| 绍兴市| 罗田县| 九龙城区| 丁青县| 密云县| 上虞市| 兴安县| 宜良县| 盐池县| 正蓝旗| 南通市| 榆社县| 赤城县| 静乐县| 庄浪县| 台南市|