编码格式引发的血案

  问题背景:

    使用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格式生成源文件。

猜你喜欢

转载自www.cnblogs.com/MXJ-Blogs/p/9146183.html