2 qq 30392833 qq_30392833 于 2016.04.20 09:58 提问

html5下a标签,如何定义下载文件txt的编码方式

要用a标签的download属性,下载一个txt的文件,文件内容是js下的字符串,然后本人用blob装成二进制流,在用URL.createObjectURL生成href地址。然后赋给a标签。但是每次遇到字符串中有中文,就会出现txt文本编码自动变成utf-8,本人想要的是ansi格式的txt文件。

 <!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
<script>
    function downloadFile(fileName, content){
        var aLink = document.createElement('a');
        var blob = new Blob([content],{type:"text/bath;charset=gbk"});
        var evt = document.createEvent("HTMLEvents");
        evt.initEvent("click", false, false);//initEvent 不加后两个参数在FF下会报错, 感谢 Barret Lee 的反馈
        aLink.download = fileName;
      /* aLink.href ='data:text/bath;charset=gbk,'+encodeURI(content);*/
       aLink.href =URL.createObjectURL(blob);
       /* aLink.chartset="GBK";
        aLink.hreflang="zh";*/
        console.log(aLink.href);
        aLink.dispatchEvent(evt);
    }
    var str ="dsaklfda你好吗";
    downloadFile('lalala.bat',str)
</script>
</body>
</html>

3个回答

qq_30392833
qq_30392833   2016.05.05 17:48

木有大神吗?又去搜索了一些文章,发现是a标签在将数据流转成文件的时候,自动选择了utf8。

tianyer
tianyer   2016.08.09 15:01

应该是服务器系统代码页设置关系导致转换时候按系统代码页选择了UTF8。
服务器应该是LINUX系统。
你本地架设IIS,改系统代码页GBK,然后测试一下自己的程序。

中文Windows的默认编码为GBK,Linux的默认编码为UTF-8。在Windows下编辑的中文,在Linux下显示为乱码。为了解决此问题,修改Linux的默认编码为GBK。方法如下:

方法1:

vi /etc/sysconfig/i18n

默认为:

LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"

修改为:

LANG="zh_CN.GBK"
SUPPORTED="zh_CN.UTF-8:zh_CN:zh"
SYSFONT="latarcyrheb-sun16"

方法2:
vi /etc/profile

export LC_ALL="zh_CN.GBK"
export LANG="zh_CN.GBK"

tianyer
tianyer   2016.08.09 15:22

使用类
OutputStreamWriter osw = OutputStreamWriter(str, "GBK")

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!