我用socket获取的byte数组,这个里面含有中文字,请问我怎么把这个数组读出来,我试几种编码方法都不行,,,help

解决方案 »

  1.   

    Encoding类byte[] bytes = new byte[1024];
    string str = Encoding.Default.GetString(bytes);
      

  2.   

    System.Text.Encoding.Default.GetString(bytesTemp);
      

  3.   

    using System.Text;//命名空间System.Text.Encoding.Default.GetString(bytesTemp); //方法看你是要解什么编码方式的了,有的还需要拼数组,
      

  4.   

    试试换个字符集。
    Encoding.UTF8
    Encoding.Default
      

  5.   

    首先 你需要要知道你的数据传输时使用什么字符集来编码的。
    然后使用Encoding里的合适方式解码才可以。如果是自定义的格式,需要相反的过程来自定义解码,什么现有方式都不行、
      

  6.   

    是啊,必须知道另一端的编码方式。如果另一端是 byte[] bytes = Encoding.ASCII.GetBytes(str),即使用了ASCII,那么在接收后中文部分不能复原(不记得了,应该是这样)。一般是使用Encoding.Default产生字节数组和复原。
      

  7.   


    依次类对
    不过注意你的byte是什么编码格式了!unicode,ASCII了,都不一样!
      

  8.   

    主要看你发送的是什么编码,像有一些发送的时候一般带一个\0做为消息的结束(主要是以前写C的程序员)//接收
     byte[] buf = state.stream.ToArray();                 
                    string mRecevied = System.Text.Encoding.Default.GetString(buf, 0, buf.Length - 1);
     
      

  9.   

    为什么我用流写入到文本文件里面,就可以正常显示中文,在string result = Encoding.Default.GetString(buf)
    在这里就只能得到空字符串help
      

  10.   

    试这个下.  按说你用Default 应该没问题啊.
    byte[] bytes  // 你需要转化的字符串.
    string str = System.Text.Encoding.GetEncoding("GB2312").GetString (bytes);
    如果你知道编码的话,把GetEncoding("GB2312")这块换下就可以了
      

  11.   

    不行啊,我把字符串的长度打印出来是75,为什么字符串显示是空的呢,会不会是有特殊字符,所以用MessageBox.Show(result),显示为空哦
      

  12.   

    发送放如果是ASCII编码(ASCII码一共规定了128个字符的编码远远不够汉字数量)你有什么解码都得不到汉字,如果两边都用utf-8应该能得到。汉字编码中现在主要用到的有三类,包括GBK,GB2312和Big5。如果要处理ANSI且codepage为gb2312的文件,那么最好直接写Encoding.GetEncoding("gb2312")去看看app.config中的编码方式,其实就算方式不对也应该是乱码不该是空啊,不明白......   
      

  13.   

    E   00000                        ;    ~              C000~升级成功;这个是写入到文本文件里面的内容,我用MessageBox.Show(result),显示为空哦 
      

  14.   

    用BitConverter.ToString()转换输出再贴上来