我正在遇到或遇到过一件非常奇怪的事情.
我想知道其他人是否有,以及为什么会这样.
使用此行运行单行程序后,System.Console.WriteLine(System.Console.OutputEncoding.EncodingName); 我看到编码是Western European (DOS)
精细
下面是一些代码页的列表
1200 Unicode ,并65001 utf-8与Windows-1252 Western European (Windows)和850 Western European DOS 从https://msdn.microsoft.com/en-us/library/system.text.encoding(v=vs.110).aspx
假设我编写了一个C sharp程序来将编码更改为utf-8
class sdf
{
static void Main(string[] args)
{
System.Console.WriteLine(System.Console.OutputEncoding.EncodingName);
System.Console.OutputEncoding=System.Text.Encoding.GetEncoding(65001);
System.Console.WriteLine(System.Console.OutputEncoding.EncodingName);
}
}
Run Code Online (Sandbox Code Playgroud)
它工作,它打印
Western European (DOS)
Unicode (UTF-8)
Run Code Online (Sandbox Code Playgroud)
现在当我再次运行csc时,csc崩溃了.

我检查了我的内存14小时,8次通过,记忆了.我跑了chkdsk我的硬盘,一切都很好.这绝对不是那些,这是一个编码问题.我知道,因为如果我打开一个新的cmd提示符,然后运行csc,它不会崩溃.
所以运行那个急剧的程序,改变shell,这样下一次运行csc就会以很大的方式崩溃csc.
如果我编译下面的代码,然后运行它,然后运行csc,然后运行csc,或csc whatever.cs,我得到csc崩溃.
关闭cmd提示符,打开一个新提示符.
这一次,尝试评论并取消注释程序的第二行
我发现,如果第二行(将代码页更改为850(DOS西欧)的行,那么它将在下次运行csc时不会崩溃).
如果我注释掉第二行,那么程序退出时将代码页/编码更改为UTF-8然后下次csc运行时,csc崩溃.
//取消注释最后一行,然后//运行但下次使csc崩溃.
class asdf
{
static void Main()
{
System.Console.OutputEncoding = System.Text.Encoding.UTF8; //output and to utf8
System.Console.OutputEncoding=System.Text.Encoding.GetEncoding(850);
}
}
Run Code Online (Sandbox Code Playgroud)
我不是唯一一个碰到这样的人
我可以通过确保最后一行将代码页设置为850来处理它.虽然我会解释这是一个不充分的解决方案.. …