"C#编辑器"和"带编码的C#编辑器"有什么区别?

isp*_*iro 4 visual-studio-2010 visual-studio

在文件的Open with菜单中.csCsharp editorCsharp editor with encoding.我用两者开了一个解决方案,并没有看到任何区别.

他们之间有什么区别?

Mic*_*eld 6

除非您的.cs文件包含正常ASCII范围之外的字符,否则您将看不到文件实际内容的差异.不同之处在于编辑器是否尝试检测您再次打开文件时保存文件的字符编码,或者具体询问您.

默认情况下,当您保存新的.cs文件时,VS使用当前的ANSI代码页对字符进行编码.(您可以使用相应的选项将其切换为默认使用UTF-8.)但是,您可以选择"使用编码保存...",这将提示您输入要保存的特定字符编码.

在内部,您的代码将被处理为UTF-16,因为这是Windows处理的原生字符串格式.但是,在磁盘上,UTF-16最有可能炸毁你的源文件,使其大小加倍,因为你编写的大多数C#代码可能都适合单个字节.因此,在写入磁盘时,VS会在特定代码页中写出您的数据,该代码页定义了如何将UTF-16字符转换为其他可能的8位字符集.

当您在VS中重新加载文件时,它会尝试确定该文件所在的编码,如果不能,则会回退到当前的ANSI代码页.(您可以通过某些选项强制它回退到UTF-8,但它不会回退到不同的编码.)

当您重新加载文件"With Encoding"时,您会收到与保存文件时相同的提示,询问您使用了哪种编码.这样,如果Studio弄错了,你可以修复它.

除非你做了很多国际化编程,在那里你必须嵌入到的.cs外国语言字符串由默认值以外的语言文件,你可能并不需要使用显式"与编码"保存或负载.但是,如果你需要它们,它们就在那里.