DataTables导出Excel/PDF/CSV时指定UTF-8编码的问题咨询
DataTables导出UTF-8编码文件配置方案
现有配置问题
你当前的配置未生效是因为:
- 仅给pdfHtml5加了编码参数,缺失excel、CSV格式的编码配置
- pdfHtml5不支持直接在顶层写charset、bom参数,参数写法不符合官方要求
- PDF导出对非拉丁字符的支持依赖字体配置,仅加编码参数无法解决乱码问题
完整配置代码
首先确保你已经引入了导出依赖的库:jszip(用于Excel导出)、pdfmake(用于PDF导出)。
$(document).ready(function() { var table = $('#allgps').DataTable({ "language": { "url": "//cdn.datatables.net/plug-ins/9dcbecd42ad/i18n/Thai.json" }, responsive: true, "lengthMenu": [ [10, 25, 50, -1], [10, 25, 50, "All"] ], dom: 'Bfrtip', buttons: [ // PDF导出配置 { extend: 'pdfHtml5', filename: 'EXTest', title: 'EXTest', customize: function(doc) { // 需提前在pdfmake中注册支持泰文的UTF-8字体,替换下方字体名即可 doc.defaultStyle.font = '自定义支持泰文字体名'; doc.defaultStyle.encoding = 'UTF-8'; } }, // Excel导出配置 { extend: 'excelHtml5', filename: 'EXTest', title: 'EXTest', charset: 'UTF-8', bom: true }, // CSV导出配置 { extend: 'csv', filename: 'EXTest', charset: 'UTF-8', bom: true, fieldSeparator: ',', lineSeparator: '\r\n' }, 'pageLength' ], }); new $.fn.dataTable.FixedHeader(table); });
注意事项
- 页面必须提前设置
<meta charset="UTF-8">,保证表格原始内容编码正确 - PDF导出如果出现非拉丁字符空白,就是字体不兼容导致,必须给pdfmake导入支持对应语言的UTF-8字体包才能正常显示
- bom: true配置必须加,否则Windows系统下用Office打开导出的文件会出现乱码
内容的提问来源于stack exchange,提问作者Mongkolwong Sonwong
相关产品推荐
相关产品推荐

