日期:2014-05-17  浏览次数:21006 次

这个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