我使用Visual 2008 (使用.NET 3.5)观察到,如果通过调试器和控制台App/Windows运行时,Console.Out.Encoding的值会发生以下变化:
现在,当Console.Out.Encoding设置为SBCSCodePageEncoding时,当无效的utf16代理写入它时,它不会抛出异常。例如:
string invalidStringContiaingHighOrderSurrogateWithOutMatchingLowOrderSurrogate = '\uD81B'.ToString() + ";";
Console.WriteLine(invalidStringContiaingHighOrderSurrogateWithOutMatchingLowOrderSurrogate);
Console.Out.Flush();但是,当Console.Out.Encoding设置为System.Text.UTF8Encoding时,编写无效的utf16代理将抛出System.Text.EncoderFallbackException。
我希望能够忽略EncoderFallbackExceptions,而不必在我所使用的大型windows应用程序中的每次使用Console.Out时添加一个try catch块。我该怎么做?
System.InvalidOperationException“实例是只读的”发布于 2013-09-02 20:09:48
使用Console.OutputEncoding属性可以任意设置编码。
(就我个人而言,我会坚持UTF-8,但是创建一个UTF8Encoding,设置一个适当的EncoderFallback值,例如ReplacementFallback。)
https://stackoverflow.com/questions/18580047
复制相似问题