利用a标签的download属性,生成一个文本下载文件,当字符串中有中文时候,通常就会出现保存的txt文件编码默认为utf-8,以下代码可以解决文本文件编码为utf-8或ansi格式自定选择。

	function base64(vStr){
		//base64编码代码略,自行去寻找插件。这里模拟直接返回编码后的值。
		return '5Yip55SoQeagh+etvueahGRvd25sb2Fk5YGaQU5TSeaWh+acrOS/neWtmOa1i+ivle+8gQ==';
	}
	//预保存的文本内容
    var tStr ="利用A标签的download做ANSI文本保存测试!"
	saveTxt = function(vFilename,vText,vCharset) {
		//文件名判断处理
		if(!vFilename){return 'vFilename is null';}
		try{	//养成好习惯,加入错误处理
			//创建A标签
			var aLink = document.createElement('a');
			if(vCharset.toUpperCase()=='ANSI'){
				//利用base64编码解决URL编码默认是UTF-8模式。
				aLink.href = 'data:text/plain;base64,' + base64(vText);
			}else{
				//encodeURIComponent默认是将字符转换成utf-8格式的url编码
				aLink.href = 'data:text/plain;charset=utf-8,' + encodeURIComponent(vText);
			}
			//A标签download属性赋值
			aLink.download = vFilename;
			//模拟点击A标签
			aLink.click();
			return true;
		}catch(err){
			console.log(err)
			console.log(err.message);
			return false;
		}
	}
	saveTxt('saveUtf8.txt',tStr,'utf-8');	//utf-8编码保存文本
	saveTxt('saveAnsi.txt',tStr,'ansi');	//ansi编码保存文本

 

Logo

前往低代码交流专区

更多推荐