【问题标题】:Unable to set DecoderFallback property of an Encoding type无法设置 Encoding 类型的 DecoderFallback 属性
【发布时间】:2014-02-13 04:41:06
【问题描述】:

我正在尝试在我的 C# 应用程序中设置任意(但受支持的)编码的 DecoderFallback 属性。基本上我想要做的是:

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

我遇到了一个我以前从未见过的异常​​:

System.InvalidOperationException 是 未处理的消息="实例是 只读。” Source="mscorlib"
堆栈跟踪: 在 System.Text.Encoding.set_DecoderFallback(DecoderFallback 价值) 在 <...> 内部异常:

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

谢谢, 布莱恩

【问题讨论】:

    标签: c# character-encoding


    【解决方案1】:

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

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

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

    【讨论】:

    • 请用文字解释你的答案,而不仅仅是用代码——这样更容易学习。
    【解决方案2】:

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

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

    【讨论】:

    • 我刚试过这个,异常还是发生了。请改用@palhares 的建议。
    猜你喜欢
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    • 1970-01-01
    • 1970-01-01
    • 2021-02-22
    相关资源
    最近更新 更多