隨筆-95  評論-31  文章-10  trackbacks-0

          客戶端使用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 朔望魔刃 閱讀(1569) 評論(0)  編輯  收藏 所屬分類: java
          主站蜘蛛池模板: 通许县| 临夏县| 城市| 库伦旗| 武隆县| 邹城市| 安义县| 武冈市| 江华| 静安区| 全椒县| 永州市| 盐边县| 平塘县| 筠连县| 日土县| 资中县| 山丹县| 宁南县| 镇安县| 延津县| 琼中| 裕民县| 会东县| 崇阳县| 虎林市| 资阳市| 新密市| 西乌珠穆沁旗| 虞城县| 渭源县| 宜阳县| 伽师县| 佳木斯市| 凌云县| 建湖县| 全南县| 彭州市| 九寨沟县| 改则县| 文山县|