隨筆-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 朔望魔刃 閱讀(1568) 評論(0)  編輯  收藏 所屬分類: java
          主站蜘蛛池模板: 上林县| 鹤岗市| 略阳县| 和林格尔县| 恩平市| 芮城县| 五家渠市| 海门市| 靖江市| 汝城县| 贺州市| 阳东县| 开封县| 济源市| 绥芬河市| 宁陕县| 子洲县| 修水县| 耿马| 丰顺县| 嘉荫县| 榆社县| 乳山市| 神木县| 赣州市| 犍为县| 台安县| 巢湖市| 贵定县| 读书| 仪征市| 金沙县| 奎屯市| 呼图壁县| 鄂尔多斯市| 修水县| 铜陵市| 长岭县| 勃利县| 新平| 信宜市|