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;