当前位置:编程学习 > C#/ASP.NET >>

关于CodeSmith4.0

CodeSmith4.0怎么输出中文 --------------------编程问答-------------------- 在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(); 
--------------------编程问答-------------------- UP!!!!!!!!!! --------------------编程问答-------------------- 占位学习,都是自己写代码,还没有用过~ --------------------编程问答-------------------- CodeTemplate指令中加上 ResponseEncoding="UTF-8" 就可以了 --------------------编程问答-------------------- 占个位置学习
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,