download - 使用 ZK 的 `Filedownload.save()` 时如何指定文本/CSV 文件的编码?
问题描述
我有一些 CSV 格式的报告,我想以 UTF-16LE 格式发送到浏览器,以使 Excel 满意(嗯……是的)。
使用 ZK 时,我可以传递Filedownload.save()
大量信息,但如何指定响应标头中应包含的编码?
解决方案
开箱即用无法指定每次下载的编码。默认情况下,ZK 只允许您指定每种文件格式的编码。它是这样工作的:
您必须创建一个Media
具有格式但没有ctype
(内容类型)的实例。然后 ZK 将使用ContentTypes.getContentType()
.
在这种情况下,这将是:
String bom = "\uFEFF";
AMedia media = new AMedia(filename, "csv", null, bom + dataAsString);
Filedownload.save(media);
注意:bom
需要将字节顺序标记添加到下载中,以便 Excel 做正确的事情。对于其他文件格式,您不需要这个。
要设置编码,请在类路径中添加一个文件(使用 Maven 时contentTypes.properties
将其放入):src/main/resources/
csv=text/csv;charset=UTF-16LE
ZK 会在启动时解析这个文件。当处理一个Media
没有内容类型但有格式的对象时csv
,ZK 会将内容类型设置为text/csv;charset=UTF-16LE
in AMedia.setup()
。
另一种选择是创建您自己的Media
接口实现,它不会charset
从内容类型中剥离部分。
有关的:
推荐阅读
- matrix - 如何避免Mathematica中矩阵本身乘以矩阵转置的奇异性
- makefile - 有没有办法在 GNU Make 中从另一个作业运行作业?
- django - Django 翻译 {% trans '...' %} 有效,但 {% blocktrans %} 无效
- visual-studio-code - X11 上下文菜单:node.js impl 有什么,gtk 应用程序没有
- javascript - 错误:在快速中间件中将标头发送回客户端后无法设置标头
- google-analytics - Google Analytics(分析)汇总了来自不同标签的总点击次数
- r - R:使用 glm-function 应用列表
- css - 当父组件的状态发生变化时,带有状态的反应组件会在子组件中触发动画
- visual-c++ - 安装flair时遇到错误
- navigation - 如何从 gps ned 计算速度矢量