CodeSmith C# 乱码之解决

将CodeSmith的输出文件在VS2005中打开,发现中文变成了乱码,看了一下CodeSmith的帮助,将ReponseEncoding属性改成"UTF-8",再重新输出,用VS打开,还是乱码。没办法,在VS的选项里面看看吧,意外发现“文本编辑器”->“常规”中有一个自动检测不带签名的UTF-8编码,选上,中文乱码终于露出了原形。找了一些资料看看,总算知道了原因:Windows为了识别Unicode、Unicode big endian和UTF-8,在Unicode、Unicode big endian和UTF-8编码的txt文件的开头会多出几个字节,分别是FF、FE(Unicode),FE、FF(Unicode big endian),EF、BB、BF(UTF-8)。而CodeSmith的输出UTF-8是标准的未加标识的。这样VS就不能识别出输出文件的编码了。

为此我们可以更改其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();

上一篇: Windows Ultimate使用初体验
下一篇: 魔术的分类
文章来自: doany.blogbus.com
引用通告: 查看所有引用 | 我要引用此文章
Tags:
最新日志:
评论: 0 | 引用: 0 | 查看次数: 5071
发表评论
登录后再发表评论!