我正在尝试在我的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文档,其中包含如何使用该属性的示例。如果有人能指出我可能会建议我的用法有什么不对,我会很感激。我需要在解码一个或多个字节失败时抛出异常,并且不能让它被忽视。
谢谢, 布赖恩
答案 0 :(得分:3)
此属性为只读。您需要使用Encoding.GetEncoding()来使用您的配置创建自己的编码。此方法接收编码,EncoderFallback和DecoderFallback。
var enc = System.Text.Encoding.GetEncoding("ASCII", EncoderFallback.ExceptionFallback, DecoderFallback.ExceptionFallback);
答案 1 :(得分:0)
基于http://www.google.com/codesearch?q=DecoderFallback
ASCIIEncoding ascii = (ASCIIEncoding)new ASCIIEncoding().Clone();
ascii.DecoderFallback = new DecoderExceptionFallback();