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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
应用HTML5 <a>标签下载文件
使用HTML5 标签可以直接下载文件而不用通过后台action。 点击下载 用户在点击这个链接的时候,就会直接下载这个文件,但是这里有个问题,像txt,jpg这些浏览器支持直接打开的文件是不会执行下载的,而是会直接打开。这时候可以给a标签添加一个download属性: 点击下载 download也可以不给值,这样就会使用默认的文件名。 浏览器支持 表格中的数字表示支持该属性的第一个浏览器的
a标签不会下载txt文件的问题
今天在做文件下载示例的时候,使用a标签下载一个txt文件的时候,浏览器始终都是直接打开这个文件,而不是将它下载到本地,但是下载xls,doc格式的文件时,却是直接下载的,原代码如下  文件下载测试      后经百度之后,发现,使用a标签去下载文件的时候,要是文件格式是浏览器支持打开的格式,例如:txt,jpg...,浏览器便不会去下载,而是直接打开这个文件,需要将html代码改成如下格式便可
a标签下载txt文件,不是直接打开的方式
在做项目的时候经常会碰到上传下载,通常在上传完文件以后会把文件在项目中的相对路径存到数据库以便下载,如果想直接下载文件,不通过后台action,则可以直接把文件路径给a标签的href属性,例如: a href="/uploadfolder/xxxx.txt">点击下载a> 这样用户在点击这个链接的时候,就会直接下载这个文件,但是这里有个问题,像txt,jpg这些浏览器支持直接打开的文件是
html a标签链接 点击下载文件
通常在咱们写项目的时候会遇到上传下载什么的,在上传完文件后会把文件的路径保存到数据库里以便下载,如果想不通过后台直接下载的话,可以把文件路径给a标签的属性href;&amp;lt;a href=&quot;/user/test/xxxx.txt&quot;&amp;gt;点击下载&amp;lt;/a&amp;gt;这样当用户打开浏览器点击链接的时候就会直接下载文件。但是有个情况,比如txt,png,jpg等这些浏览器支持直接打开的文件是不会执行下载...
html5链接直接下载文件 不是直接打开 如pdf, doc 等
download="w3logo">浏览器支持IEFirefoxChromeSafariOpera否            是是否否只有 Firefox 和 Chrome 支持 download 属性。HTML 4.01 与 HTML 5 之间的差异在 HTML5 中,download 属性是 标签的新属性。
HTML5 a标签定义超链接详解
前言&amp;lt;a&amp;gt;标签定义超链接,用于从一张页面链接到另一张页面。 &amp;lt;a&amp;gt;元素最重要的属性是 href 属性,它指示链接的目标。指向 w3school 的超链接:&amp;lt;a href=&quot;http://www.w3school.com.cn&quot;&amp;gt;W3School&amp;lt;/a&amp;gt;1&amp;lt;a&amp;gt;标签的伪类样式一组专门的预定义的类称为伪类,主要用来处理超链接的状态。超链接文字...
关于a标签download替换下载文件名问题
html5 a标签支持download属性修改下载的文件名。 js: var a = $(#a_id).href("download/url"); a.download = "rename.xml"; a.click(); html: 存在的问题: 直接点击下载文件名还是默认的,只有在右键连接另存为的情况下才能通过download属性改变文件名。 html5 的down
a标签实现文件文件下载(ie8可用)
背景:项目中大量使用a标签href属性直接写文件资源路径,在火狐浏览器上可以直接使用,但是在ie8下则在浏览器直接打开,显示为乱码,为尽量减少修改,写以下代码。
html使用a标签不通过后台实现直接下载
html使用a标签不通过后台实现直接下载
HTML <a> download 属性,点击链接来下载图片
Html5里面的 标签的 Download 属性可以设置一个值来规定下载文件的名称。所允许的值没有限制,浏览器将自动检测正确的文件扩展名并添加到文件 (.img, .pdf, .txt, .html, 等等), 但是 Download 的兼容性不怎么样,只有 Firefox 和 Chrome 支持 download 属性。但是,路总是人走出来的嘛(哈哈哈哈),在文章后面会给大家说说怎么兼容I