--2007-6-18 12:58:19
编码转化的另类解决方案(适应所有的编码格式之间的互转)
主要是利用windows系统自带的adodb.stream组件,通过一个过渡文件是实现编码的转换,代码很简单,不需要多解释,估计懂点代码的朋友都能理解。原则上这个方法适应所有的编码格式之间的互转,我这里只是写了最常用的UTF-8和GB-2312之间转换的两个函数:cGb和cUtf。其他的实现方法类似,改个编码方式即可!
[Copy to clipboard]CODE:
function cGb(body){
writeToTextFile(System.SitePath + 'inc\\charset',body,'gb2312');
return readFromTextFile(System.SitePath + 'inc\\charset','utf-8');
}
function cUtf(body){
writeToTextFile(System.SitePath + 'inc\\charset',body,'utf-8');
return readFromTextFile(System.SitePath + 'inc\\charset','gb2312');
}
function writeToTextFile(file,str,charset){
/\\/.test(file) ? '' : file = Server.MapPath(file);
createFolder(file.replace(/\\[^\\]+$/,""));
var stm = Server.CreateObject("adodb.stream");
stm.Type = 2;
stm.Mode = 3;
stm.Charset = charset;
stm.open;
stm.WriteText(str);
stm.SaveToFile(file,2);
stm.flush;
stm.close;
}
function readFromTextFile(file,charset){
/\\/.test(file) ? '' : file = Server.MapPath(file);
var stm = Server.CreateObject("adodb.stream");
stm.Type = 2;
stm.Mode = 3;
stm.Charset = charset;
stm.open;
stm.LoadFromFile(file);
var str = stm.ReadText;
stm.close;
return str;
}
function createFolder(folder){
var fso = Server.CreateObject("scripting.filesystemobject");
/\\/.test(folder) ? '' : folder = Server.MapPath(folder);
var parentFolder = folder.replace(/\\[^\\]+$/,"");
if(fso.FolderExists(folder))
return true;
if(fso.FolderExists(parentFolder)){
fso.CreateFolder(folder);
}else{
createFolder(parentFolder);
createFolder(folder);
}
}
相关内容
下列内容与编码有着内在的联系,建议您一并阅读。