导航

采用CodeDom方法解决Unicode转中文(gb)的方法

Posted on 2006-08-15 11:16  色彩与空间  阅读(1033)  评论(0编辑  收藏  举报
在采用reflector反编译代码的时候,字符串都被转换成unicode形式保存
从网上查了一些资料,基本都是采用内码的办法进行转换
其实可以采用很简单的办法解决,就是通过CodeDom的方法
代码如下:

 1            CodeDomProvider prov = new CSharpCodeProvider();
 2            CompilerParameters para = new CompilerParameters();
 6            para.GenerateInMemory = true;
 7            para.TreatWarningsAsErrors = false;
 8            string code =
 9                "namespace My{ " +
10                "public class Code " +
11                "{" +
12                "   public string GetString()" +
13                "   {" +
14                "       string strCode = \"" + textBox1.Text + "\";" + //形式如:\u8bf7\u5148\u5b9a
15                "            return strCode;" +
16                "   }" +
17                "}}";
19            CompilerResults cr = prov.CompileAssemblyFromSource(para, code);
20            foreach (string s in cr.Output) {
21                System.Diagnostics.Debug.WriteLine(s);
22            }

23            
24            Assembly assembly = cr.CompiledAssembly;
25            Type type = assembly.GetType("My.Code");
26            object obj = assembly.CreateInstance("My.Code");
27            string ret = type.InvokeMember("GetString", BindingFlags.InvokeMethod, null, obj, null).ToString();