乐府诗个人博客 >> ASP >> 编码转化的另类解决方案(适应所有的编码格式之间的互转)

编码转化的另类解决方案(适应所有的编码格式之间的互转)

主要是利用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);
        }
}

下列内容与编码有着内在的联系,建议您一并阅读。

公益广告