字符串如下:
2 49 48 48 49 48 48 49 65 193 185 178 203 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 48 48 48 48 48 49 3
传下来的都是ASCII,如何转换成String,其中有汉字
byte[] request = new byte[8192];
mServerSocket = new DatagramSocket(ServerPort);
DatagramPacket pack = new DatagramPacket(request, request.length);
mServerSocket.receive(pack);
String RecMsg = new String(pack.getData(),0,pack.getLength());用这这个语句接收的数据,没有汉字就没有问题,有汉字的话,就有乱码。
193 185 178 203 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 48 48 48 48 48 49
这部分转换出来的是
???                000001193 185 178 203 这个是两个汉字(凉菜)请高手指点一下,对Java汉字转换这一块了解不是太多!初学者!
谢谢!UDPAndroidString汉字ASCII

解决方案 »

  1.   

    String RecMsg = new String(pack.getData(),0,pack.getLength(),"iso-8859-1");
      

  2.   


    "iso-8859-1"改成"gb2312"就好了!谢谢asia_deng的提示
      

  3.   

    总结:用UDP传输数据的时候,将报文转换成ASCII,在接收数据时候,
    byte[] request = new byte[8192];
    mServerSocket = new DatagramSocket(ServerPort);
    DatagramPacket pack = new DatagramPacket(request, request.length);
    mServerSocket.receive(pack);
    String RecMsg = new String(pack.getData(),0,pack.getLength());
    默认的编码格式是unicode编码,
    而我传过来的数据是ASCII报文(机内码),字母、符号、数字都是1个byte,汉字是2个byte,
    在接收数据的时候,要将这些的报文按照gb2312(机内码)的编码格式重组。
    byte[] request = new byte[8192];
    mServerSocket = new DatagramSocket(ServerPort);
    DatagramPacket pack = new DatagramPacket(request, request.length);
    mServerSocket.receive(pack);
    String RecMsg = new String(pack.getData(),0,pack.getLength(),"gb2312");之所以会出现我遇到的情况,还是对Java中String默认的编码规则不熟悉。
    希望能给初学者一定的帮助。