无法设置编码类型的DecoderFallback属性

时间:2009-06-04 21:52:13

标签: c# character-encoding

我正在尝试在我的C#app中设置任意(但支持)编码的DecoderFallback属性。基本上我正在尝试做的是:

ASCIIEncoding ascii = new ASCIIEncoding();
ascii.DecoderFallback = new DecoderExceptionFallback();

我得到了一个我以前从未见过的例外:

  

System.InvalidOperationException是   未处理的消息=“实例是   只读。“来源=”mscorlib“
  堆栈跟踪:          在System.Text.Encoding.set_DecoderFallback(DecoderFallback   值)          at< ... into my app ...>   的InnerException:

我无法找到任何MSDN文档,其中包含如何使用该属性的示例。如果有人能指出我可能会建议我的用法有什么不对,我会很感激。我需要在解码一个或多个字节失败时抛出异常,并且不能让它被忽视。

谢谢, 布赖恩

2 个答案:

答案 0 :(得分:3)

此属性为只读。您需要使用Encoding.GetEncoding()来使用您的配置创建自己的编码。此方法接收编码,EncoderFallback和DecoderFallback。

var enc = System.Text.Encoding.GetEncoding("ASCII", EncoderFallback.ExceptionFallback, DecoderFallback.ExceptionFallback);

http://msdn.microsoft.com/pt-br/library/89856k4b.aspx

答案 1 :(得分:0)

基于http://www.google.com/codesearch?q=DecoderFallback

ASCIIEncoding ascii = (ASCIIEncoding)new ASCIIEncoding().Clone();
ascii.DecoderFallback = new DecoderExceptionFallback();