zoukankan      html  css  js  c++  java
  • .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.

  • 相关阅读:
    VC:文件串行化(CFileDialog类、CFile类、CArchive类、Edit控件)
    实例说明optimize table在优化mysql时很重要
    文件备份,同步工具rsync服务器端的安装及配置
    log4cxx does not compile on kernel 2.6.29.6
    CentOS桌面安装
    编译 apachelog4cxx0.10.0inputstreamreader.cpp:66: error: ‘memmove’ was not declared in this sco
    解决/usr/bin/ld: cannot find lmysqlclient错误
    mysql 复制表数据,表结构的3种方法
    php 动态添加OPENSSL模块
    mysql开启慢查询方法
  • 原文地址:https://www.cnblogs.com/bg57/p/3452903.html
Copyright © 2011-2022 走看看