编码格式引发的血案

Posted M小健

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编码格式引发的血案相关的知识,希望对你有一定的参考价值。

  问题背景:

    使用GalaSoft.MvvmLight写个WPF小应用。通过VS的Nuget管理器安装GalaSoft.MvvmLight。然后在安装MvvmLight时自动生成的MainViewModel.cs源文件中写入了中文的代码逻辑。

 

  问题现象:

    源代码中有中文字符串的比较逻辑(类似:str=="中文"),比较结果永远是false。通过调试查看str值以及监视str=="中文"的结果,却可以得到true的结果。

 

  问题原因:

    通过Nuget管理器安装GalaSoft的MvvmLight时,会自动添加两个类文件(MainViewModel.cs和ViewModelLocator.cs)。而生成的MainViewModel.cs文件的编码格式为GB2312,所以在文件中写入中文后,再经过编译就会变成乱码,导致逻辑异常。

    后面把系统语言换成英文后,自动生成的MainViewModel.cs文件的格式为UTF8,然后再把系统语言换回中文,自动生成源文件的编码格式还是UTF8。所以并不知道之前是抽了什么风,给我用GB2312格式生成源文件。

 

以上是关于编码格式引发的血案的主要内容,如果未能解决你的问题,请参考以下文章

如何查看文件编码格式?

xml中设定编码格式

如何检查TXT文本是否ANSI编码格式的?

java 怎么获得文件编码格式

怎么把文件的编码格式转换成ANSI

怎么把文件的编码格式转换成ANSI