关于codesmith中文乱码的解决方法

在使用codesmith写模板生成代码时,遇到了两种中文乱码的问题:模板内中文乱码,模板生成的文件中中文乱码。

一、模板内中文乱码:

使用codesmith写模板时,保存后中文会变成乱码,此解决方法,网上很好搜。在此在记录一下。

1、打开CodeSmith Studio
2、打开菜单Tools--〉Options
3、确认Enable unicode support钩上
4、修改你的CodeProject代码,确认具有地下红色部分的信息
<%@ CodeTemplate Language="C#" ResponseEncoding="UTF-8" TargetLanguage="Text" Src="" Inherits="" Debug="False" Description="Template description here." %>
5、完成了

二、用模板生成的文件中的中文乱码:

网上查了一些资料,说codesimth生成的文件的默认编码格式是utf-8格式。网上也找到了一种解决方法,不过没怎么弄明白,在此也记录一下。

网上资料:(两种方法)

1、模板文件是ASII编码,而最终存储的文档则用的是Utf-8,把模板文件另存为Utf-8格式,再生成中文乱码问题解决。

2、为此我们可以更改其CodeSmith的脚本的方法来处理:(原文)(另一参考

 以下为修改的代码。

//首先增加2行

 public System.Text.Encoding enc = System.Text.Encoding.GetEncoding("Unicode");
 public System.IO.StreamWriter txt;

  //找到下面这句话

  //this.ClassTemplate.RenderToFile(classFileName, true);
 

//上面这段话更改成下面的代码   
    txt = new System.IO.StreamWriter(classFileName,false,enc );
    txt.Write(ClassTemplate.RenderToString());
    txt.Close();

//再找到下面这句话

//this.MappingTemplate.RenderToFile(mappingFileName, true);

//上面这段话更改成下面的代码

     txt = new System.IO.StreamWriter(mappingFileName,false,enc );
      txt.Write(MappingTemplate.RenderToString());
      txt.Close();

3、自己总结的方法,主要针对生成的文件后结合Visual Studio使用的情况。

生成完文件后,把文件加入到项目中,别使用“双击”的方式打开文件。右键点击要打开的文件,然后选择打开方式从中选择“带编码的编辑器”打开,比如:如果要打开aspx文件可以选择“带编码的HTML编辑器”,打开.cs文件可以选择“带编码功能的CSharp编辑器”,这样中文就不会乱码了。最好在生成的aspx文件头家商这样一句“<meta http-equiv="content-type" content="text/html; charset=utf-8">”,显式制定编码格式。

这是目前总结的一些问题,希望对大家有用。

 

posted @ 2010-08-28 18:22  acles  阅读(3170)  评论(0编辑  收藏  举报