.net 中文显示乱码问题(Chinese display with messy code)

Case:同样的代码,本地开发环境(local is Chinese Simplify)可以成功运行,但是放到Windows Server 2008 R2(Local is United State) 上,同样的代码失败了。最后跑到server上用vs2012 获取最新代码发现所有的中文都是乱码。

Solution1:只该代码,其它设置不变(server 上的是设置不是我们这些小兵想动就可以动的)。我写了两个方法。

 1         public bool CompareChineseString(string flagString,string garbageString)

 2         {

 3            // string flagStr = "備註";

 4             string nomalString=string.Empty;

 5             ConvertGarbageStringToChinese(garbageString,ref nomalString);

 6             if (flagString.Contains(nomalString))

 7             {

 8                 return true;

 9             }

10             else

11             {

12                 return false;

13             }

14         }

15         public void ConvertGarbageStringToChinese(string garbageString, ref string noamlString)

16         {

17             //  string utfinfo = "‚äÔ]";

18             Encoding defaultEncoding = Encoding.Default;

19             Encoding gb18030 = Encoding.GetEncoding("gb18030"); // It can also used "gb2312"

20             byte[] bytes = defaultEncoding.GetBytes(garbageString);

21             noamlString = gb18030.GetString(bytes);

22         }
View Code

在方法ConvertGarbageStringToChinese()中,我们取得是当前系统的Encoding 方式。对于Encoding设置各个系统的会有差异,我们可以用C# 的方法 来查看Encoding.Default.EncodingName。由于我们所用的server上 用的encoding 的code page 的名称是windows-1252。但是我们本地用的是:gb2312,所以程序在本地可以运行成功,但是server上会出现乱码,所以不成功。

下面看一下调用:

 1             string flagStr = "備註";

 2             string utfinfo = "‚äÔ]";

 3             using (ConvertChineseWithDiffEncoding compareMethod = new ConvertChineseWithDiffEncoding())

 4             {

 5                 if (compareMethod.CompareChineseString(flagStr, utfinfo))

 6                 {

 7                     Console.WriteLine("the same");

 8                 }

 9                 else

10                 {

11                     Console.WriteLine("different");

12                 }

13             }
View Code

在我们的环境下,flagStr 是从excel 中读取的,所以这里就设成一个正常值。另一个传入的字符串就是乱码部分了,也就是将要处理的。

Solution2:更改visual studio 的TextEditor设置(For example vs2012):

Tools -> Options -> Auto-detect UTF-8 encoding without signature 

select the checkbox.

Solutin3:control panel -> Language, and Region ->Region ->Administative tab -> Change system locale:-> select Chinese( simplified,China) from the dropdownlist.

 

你可能感兴趣的:(display)