过程描述:
    在一台没有安装中文语言包的机器COMPUTER1(这台机器和后面的机器都是英文操作系统)上有一个内容是中文的TXT文件CN.txt,现在从另外一台安装了中文语言包的机器COMPUTER2读取这个TXT文件,结果出现以下乱码:
      "Fw: 鍏充簬甯愭埛鐨勫垱寤\0"
以上的内容是通过“添加监视”一个string变量得到。PS:大家都知道字符串是以“\0”结尾的,(不要来扫这个盲!!)但这个是系统追加的,假如你将一个字符串输出,你不会看到这个“\0”。然而很不幸,我看到了。我现在怀疑是没装语言包的问题,但现实不允许我给COMPUTER1装上语言包来证实。望大家提供原因和解决办法。3X

解决方案 »

  1.   

    把那个TXT文件CN.txt复制过来,用记事本(NotePad)打开,
    点菜单,另存为,就可以看到它的编码
    然后用这个编码来打开这个文件即可
      

  2.   

    byte[] byteMessage = new byte[256];
     rMessage = Encoding.ASCII.GetString(byteMessage);
     如果你实际的字符长度没有256那rMessage后面就会有\0出现.
    rMessage=rMessage.TrimEnd('\0')这样就去除了
      

  3.   

    TO:VIENA
         如果我没有办法得到给文件的编码方式,有没有一个不用考虑具体文件编码方式的办法?
    TO:LIUCHAO305
         文件的内容我存在一个STRING变量中,不是BYTE数组,虽然字符数组可以表示字符串。但是如果使用数组,我并不能确定数组长度。通过TRIMEND('\0')可以将去掉“\0”,不过文字却还是乱码。不知道有没有其他解决办法?
      

  4.   

    应该用用IE来判断编码,将文件用IE打开,然后不断的更改编码设置,直到你看到人类可以理解的文字为止。
      

  5.   

    可以用string.Replace("\0","");去掉.
      

  6.   

    TO: LOVNY && TO:ALL      如果我是从那台机器的EXCHANGE服务器直接读取的MESSAGE信息呢。实际上上面的字符串是从一台EXCHANGE服务器读取到的一封EMAIL的SUBJECT。    我做的是WINFORM,不可能用IE或者记事本来查看编码方式。
      

  7.   

    SORRY to LVONY
     把你的名字打错了^_^
      

  8.   

    rMessage = Encoding.ASCII.GetString(byteMessage);
    可以有长度的吧
    System.Text.Encoding.Default.GetString (byteMessage,0,count)