日期:2014-05-18  浏览次数:20983 次

C#.NET,unicode转换ascii问题,急!
private   uint   Uid()
        {
               
                //这段字符串是从二进制文件读出来的,是用C++写进去的,写进去的时候是用
              unicode的,现在用C#取出来了,是%\0#\0%\0)\0!\0(\0*\0%\0,应该是%#%)&!(*%,九个字符,可是取出来因为是unicode的,变成18个字符,我现在想去掉右边的\0,但是试了好多办法不行,下面一段代码是网上找的,转出来还是18个,请高手指定!
                string   szBu   =   %\0#\0%\0)\0!\0(\0*\0%\0;

                Encoding   ascii   =   Encoding.ASCII;
                Encoding   unicode   =   Encoding.UTF8;
              byte[]   unicodeBytes   =   ascii.GetBytes(szBu);
              byte[]   asciiBytes   =   Encoding.Convert(unicode,   ascii,   unicodeBytes);
                char[]   szBuf   =   new   char[ascii.GetCharCount(asciiBytes,   0,   asciiBytes.Length)];
                ascii.GetChars(asciiBytes,   0,   asciiBytes.Length,   szBuf,   0);
                string   asciiString   =   new   string(szBuf);
             
             
        }

------解决方案--------------------
File.WriteAllText(room2, File.ReadAllText(room1, Encoding.Unicode),Encoding.ASCII);


以上是把一个Unicode的文本文件转成ASCII编码的文件.
其中File.WriteAllText函数和FileReadAllText函数都是返回string类型的.
room1,是原始文件的地址
room2,是改变后文件的地址

这两个函数都是在using System.IO中所以开头要在里面加using System.IO;