• .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.

  • 相关阅读:
    清除右键图形属性--图形选项
    Hibernate整合Struts2时报错
    shell基础篇(十)shell脚本的包含
    shell基础篇(九)函数
    浅谈sql的字符分割
    shell基础(八)-循环语句
    shell基础(七)-条件语句
    vue ---- Object的一些常用的方法
    vuex的应用和解决的实际问题
    webpack2代码分割
  • 原文地址:https://www.cnblogs.com/bg57/p/3452903.html
Copyright © 2020-2023  润新知