用字节流传递应该没什么问题,先试一下传过来后用中文编码构造字符串就可以了,如果不行就把server和client的编码格式设为同一种编码格式。

解决方案 »

  1.   

    有没有这方面的源码呢?[email protected]谢谢
      

  2.   

    java和vb 那个是unicode编码阿。
      

  3.   

    我也有这方面的问题:[email protected]
      

  4.   

    Server和Client都用gb2312编码,
    传输的字节流用ISO8859_1编码。
    传输的时候:getBytes(ISO8859_1)
    取的时候gb2312
      

  5.   

    http://www.javajia.com/php/document.php?subjectid=6
      

  6.   

    Java 字符串是作为 16 位 Unicode 字符存储的,而 C 字符串是作为一组 8 位且以空字符为结束的字符存储的。JNI 提供了几个有用的函数,它们用于在 Java 字符串和 C 字符串之间进行转换并操作这两种字符串。下面的代码片段演示了如何将 C 字符串转换成 Java 字符串:
     1. /* Convert a C string to a Java String. */
     2. char[]  str  = "To be or not to be.\n";
     3. jstring jstr = (*env)->NewStringUTF(env, str);以上为IBM developerWorks 中国网站上JNI教程里的原文希望对你有帮助
      

  7.   

    yannqi(燕祺)说的对,对于c/c++不同的操作系统或者芯片对有些数据类型的位数不一样的,要测出c/c++运行的机器上的各种数据类型的位数,对于位数一样的不需要调整,对于不一样的可以按照约定的字节数发送,如下面tkgpName(中继裙名字),发的时候按照字节放到流中,读的时候按照字节读就可以了,在下面代码中,int是位数一样的,tkgpName规定是按照32个byte来的,
    int tkgpId = input.readInt();
                             int CIC = input.readInt();            
                 byte tkgpName[] = new byte[32];
                 input.read(tkgpName);
                 String call = new String(tkgpName).trim();//1
                             byte dest[] = new byte[8];
                              input.read(dest);
                 String de = new String(dest).trim();//1
      

  8.   

    谢谢大家,问题已经解决:我在Server端是用java:
    public static byte[] translateMessage(int head,String message){

    StringBuffer sb=new StringBuffer();
    sb.append(Integer.toString(head));
    sb.append(message);
    char tail=(char)35;

    sb.append(tail);
    System.out.println(sb.toString());
    byte[] m=null;
    try{
    m=sb.toString().getBytes("UTF-8");

    }catch(UnsupportedEncodingException e){
    System.out.println("Error in Message.translateMessage");
    System.out.println(e.getMessage());
    return null;
    }
    return m;
    }


    //解码

    public static String decodeMessage(byte[] message){
    String m=null;
    try{
    m=new String(message,"UTF-8");

    System.out.println("In decodeMessage():"+m);

    }catch(UnsupportedEncodingException e){
    System.out.println(e.getMessage());
    System.out.println("Error in Message.decodeMessage()");
    return null;
    }

    System.out.println("after trim():"+m.trim());
    return m.trim();
    }

      

  9.   

    在Client端:CString(其中的文字已经是unicode的了,只要你定义了_UNICODE ) 
    用WcharToMultibyte() 把它前面的Cstring编码为UTF-8的码,得到的文字已经是char *
    的格式,就可以在网路不同语言之间传输了