现向各位大虾讨教几个问题:背景:通过.Net的C#实现一个TCP传输的C/S结构。问题:
1)Server在linux平台上通过ASCII或GB2312对要传输的string进行编码,Client在Windows平台上接收来在Server端传送过来的字节数组,Client解码为String时应该采用用何种解码方式?2)如果Client要判断Server端传过来的字节数组的编码方式,因该如何判断呢?3)ASCII、GB2312、Unicode三者之间是什么关系呢?4)ASCII、GB2312、Unicode之间在不同的平台(windows、linux下有区别吗?)望各位大虾赐教!

解决方案 »

  1.   

    跨平台,是所要用的那个平台上也装.net框架,装没
      

  2.   

    ASCII不用多说了吧,GB2312时现在最常用的汉子编码,Unicode是国际码支持n种语言编码当然码长比较长。
    你在linux做了unicode的编码,那么接受时也要用unicode编码。C#中的System.Text空间下的Encoding类提供了多种编码对象,你可以参考msdn。
    编码在不同平台下是统一的。
    问题2我也没注意过,楼下继续…………
      

  3.   

    Server是Linux没有装.netClient是Windows装了.net
      

  4.   

    編碼是一種標准沒有平台之分
    所以你在server采用什麼編碼,在client端就采用什麼解碼就行了
      

  5.   

    你的问题和装不装.Net无关吧。
    冷风.net说的很清楚了
      

  6.   

    使用System.Encoding.转换成Unicode的byte[]然后使用byte字节传送,客户端 使用这个编码生成应该不成问题吧
      

  7.   

    .net中的GetEncoding方法好像只能获得"GB18030"类的编码类型,
    "GB18030"应该是兼容"GB2312"、"ASCII"的。所以我在Client端采用"GB18030"解码"ASCII"和"GB2312",这应该没有问题吧!还有,能不能从一个字节数组中获得该数组的编码方式呢?
      

  8.   

    一般stream有自动识别编码的功能,你定义一个memorystring,把字节数组写进去,然后
    MemoryStream ms = new MemoryStream();
    //写字节数组
    StreamRead sr = new StreamWrite(ms);
    string s = sr.sr.ReadAll();//可以自动识别编码