CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

-------------100分,非要解决字符串编码的问题。--------------------

楼主javaname80(javaname60)2006-06-01 15:58:21 在 Java / J2SE / 基础类 提问

如下,我用NIO来处理Socket连接,下面是接受数据的代码。可是如果接受英文没有问题,如果是中文的话,就出现乱码。              
         
         
  /**              
                    *         接收消息              
                    *         @param         sc         SocketChannel              
                    *         @return         boolean              
                    */              
            private         synchronized         boolean         acceptInfo(SocketChannel         sc)         {          
         
                            StringBuffer         sb         =         new         StringBuffer();              
                            ByteBuffer         buffer         =         ByteBuffer.allocate(1024);              
         
                            try         {              
                                            while         (sc.read(buffer)         >         0)         {              
                                                            while         (buffer.hasRemaining())         {              
  .....................................................      
     
                                                            }                                                                      
                                            }      
                            }              
                            catch         (IOException         ie)         {              
                                             
                            }              
                                 
            }              
  问题点数:100、回复次数:7Top

1 楼jingweicool(蓝色风暴)回复于 2006-06-01 16:10:58 得分 0

dingTop

2 楼iwlk(http://www.ChinaFedora.cn/ fedora论坛)回复于 2006-06-01 16:12:06 得分 0

http://community.csdn.net/Expert/topic/4794/4794120.xml?temp=.5041773Top

3 楼strawren(大漠)回复于 2006-06-01 16:14:56 得分 0

给个提示给你吧,你就知道问题出在什么地方了  
   
  byte[]   data;  
   
  sc.read(data   );  
   
                                 
  String   returnString   =   new   String(data,   "UTF-8");  
  System.out.println(returnString   );Top

4 楼javaname80(javaname60)回复于 2006-06-01 16:33:28 得分 0

唉!没有人做过这样的吗?Top

5 楼sswater(光杆兵)回复于 2006-06-01 16:59:28 得分 0

搂主的问题其实很简单,概念问题:  
  http://www.regexlab.com/zh/encoding.htm  
  Top

6 楼treeroot(旗鲁特)回复于 2006-06-01 17:08:16 得分 0

upTop

7 楼OnlyFor_love(『勾勾手指头 一辈子不分手』)回复于 2006-06-02 14:40:21 得分 0

参考如下代码  
          public   String   receiveMessage()   throws   Exception   {  
                  byte[]   buf   =   new   byte[BUFSIZE];  
                  int   i   =   0;  
                  int   n   =   0;  
                          while   ((n   =   in.read())   <   0)   {  
                                  //没有读进数据  
                                  //throw   new   IOException("epp   element   incomplete");  
                          }  
   
                          if   (i   ==   buf.length)   {  
                                  //移动数据  
                                  byte[]   newBuf   =   new   byte[buf.length   +   BUFSIZE];  
                                  for   (int   j   =   0;   j   <   buf.length;   j++)   {  
                                          newBuf[j]   =   buf[j];  
                                  }  
                                  buf   =   newBuf;  
                          }  
   
                          //写入数据  
                          buf[i++]   =   (byte)   n;  
   
                  return   new   String(buf,   "UTF-8").trim();  
          }  
  Top

相关问题

关键词

得分解答快速导航

  • 帖主:javaname80

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo