隨筆-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
          主站蜘蛛池模板: 长治市| 西充县| 容城县| 修水县| 启东市| 金沙县| 新化县| 买车| 明光市| 周口市| 耿马| 吴忠市| 贺兰县| 健康| 普洱| 噶尔县| 大同市| 沛县| 贵南县| 铁岭市| 镇巴县| 山丹县| 邓州市| 潞西市| 江达县| 谷城县| 馆陶县| 浦县| 军事| 苍梧县| 紫云| 凤台县| 娄底市| 镇巴县| 公主岭市| 平江县| 四川省| 荔波县| 沧州市| 桦川县| 塔河县|