这个Encoder.GetBytes(string)为什么会错
Encoding.GetBytes(String)方法:MSDN
将指定字符串中的所有字符编码为一个字节序列。
可是,下面的代码为什么报错
static void Main(string[] args)
{
FileStream aFile = new FileStream("e:\\Temp.txt", FileMode.Create);
Encoder e = Encoding.UTF8.GetEncoder();
byte[] byData = e.GetBytes("成功"); //报错
aFile.Write(byData, 0, byData.Length);
aFile.Close();
}
上面的代码报错,----““GetBytes”方法没有任何重载采用“1”个参数
可是,MSDN上,Encoding.GetBytes(String)方法明明只有一个参数啊
------解决方案--------------------byte[] byData = Encoding.UTF8.GetBytes("成功"); //报错
------解决方案--------------------Encoding.UTF8.GetBytes("xx");
这样
另外,如果你只是想往文件里面写入这个字符串,大可不必那么麻烦
File.WriteAllText("file.txt", "xxx");
------解决方案--------------------分清楚 Encoder 和 Encoding。
------解决方案--------------------你调用的是Encoder,不是Encoding,马大哈~~
------解决方案--------------------GetBytes用法错了,好好看帮助Encoder的getbytes和encoding的getbytes完全不一样
------解决方案-------------------- var a = System.Text.Encoding.UTF8.GetBytes("成功");
楼主这句话是对的 Encoding是system.text命名空间下的吗。
------解决方案--------------------我一直用的是4.0 会不会有版本之差 这就不清楚了。
------解决方案--------------------楼主调用的是Encoder.GetBytes(),他跑去MSDN查到的是Encoding.GetBytes(),然后就报错了。。这和版本、和MS压根就没关系,完全是楼主马大哈造成的错。。
------解决方案--------------------这个才是Encoder.GetBytes的用法:
http://msdn.microsoft.com/zh-cn/library/5zxk59x5
要给很多参数,指明是从哪里编码到哪里,而不是对字符串全部编码(仅编码一部分)
你这种全部编码显然用错了方法。
------解决方案--------------------
Encoder 类:将一组字符转换为一个字节序列。
Encoding 类:表示字符编码。
http://www.cnblogs.com/criedshy/archive/2012/08/08/2628554.html