layui table怎么解决中文表头导出乱码问题

夏枫君_2873

夏枫君_2873

2026-10-13

986人浏览

原创

根本原因是windows版excel默认用gbk解析无bom的utf-8 csv文件;必须在csv字符串最开头添加\ufeff(utf-8 bom),即ef bb bf三字节,才能强制excel识别为utf-8并正确显示中文表头。

layui table怎么解决中文表头导出乱码问题

中文表头导出乱码,根本不是表头内容写错了,而是 Excel 打开时编码猜错了——必须在 CSV 字符串最开头加 \ufeff(UTF-8 BOM),否则 Windows 版 Excel 默认用 GBK 解析,中文必然变问号或方块。

为什么加 \ufeff 就能解决

Windows 版 Excel 不看文件后缀、不读 HTTP header、也不认 text/csv;charset=utf-8,它只靠文件前三个字节(\ufeff 对应 EF BB BF)判断是否为 UTF-8。没这个头,就强制按系统 ANSI(如 GBK)解码,UTF-8 编码的中文字符串一读就崩。Layui 的 table.exportFile() 默认不加,所以得你手动塞。

  • 加的位置必须是整个 CSV 字符串的最开头,不能插在中间,也不能漏掉
  • \ufeff 是 Unicode 字符,JS 字符串里直接写 '\ufeff姓名,城市' 即可,无需额外转义
  • Mac 版 Excel 默认用 UTF-8,加了 BOM 可能显示成 ,这不是错误,是行为差异;若用户群含 Mac,建议提供“带 BOM”和“无 BOM”两个导出入口

别用 table.exportFile('id') 快捷方式

这个方法会绕过所有自定义逻辑:它直接读 table.cache,用逗号硬拼字段,不加 BOM、不转义特殊字符、也不处理表头 title。导出中文表头必乱码。

深蓝色网站后台管理系统layui框架模板-AdminPro
深蓝色网站后台管理系统layui框架模板-AdminPro

一款深蓝色网站后台管理系统layui框架模板

下载
  • 正确做法是手动构造 CSV 字符串,再调用 table.exportFile(null, csvStr, 'csv')
  • 表头取自列配置的 title 字段,确保初始化时每列都写了中文 title,例如 {field: 'user_name', title: '用户名'}
  • 如果用了 templet 渲染函数,导出仍以 title 为准,不影响

字段含逗号、双引号或换行符怎么办

光加 BOM 不够。CSV 规范要求:含 ,、" 或 \n 的字段必须用双引号包裹,且内部 " 要替换成 "",否则 Excel 会错列。

  • 对每个字段值做检测:if (val.includes(',') || val.includes('"') || val.includes('\n'))
  • 满足条件则包裹双引号,并将内部 " 替换为 "",例如 '"北京,""朝阳区"""'
  • 表头行也要同样处理,比如 title 是 "用户姓名",就得包裹转义
  • 拼接时用 \n 换行,不要用
    <br>
    或其他 HTML 标签

中文文件名在旧浏览器上无效怎么办

table.exportFile() 的 filename 参数在 IE 和旧 Edge 上基本失效,因为 Content-Disposition 对 UTF-8 文件名支持极差。现代浏览器(Chrome/Firefox/Edge 80+)可直接用,但稳妥起见建议统一走 Blob 流程。

  • 构造好带 \ufeff 的 csvStr 后,用 new Blob([csvStr], {type: 'text/csv;charset=utf-8'})
  • 再用 URL.createObjectURL(blob) 生成链接,赋给 a.download(现代浏览器支持中文名)
  • 记得最后调用 URL.revokeObjectURL(url) 防内存泄漏,尤其高频导出场景
  • 如果用 table.on('toolbar(filter)') 拦截导出按钮,务必 return false 阻止默认行为

最常被忽略的一点:\ufeff 虽简单,但它不属于 CSV 标准,某些老旧 ETL 工具或脚本读取时可能跳过首行——如果你的下游系统对格式极其敏感,得提前验证兼容性,而不是只看 Excel 是否显示正常。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

layui表格 layui

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2463

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

5283

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

6330

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

5918

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

843

5

excel对比两列数据异同
excel对比两列数据异同

Excel作为数据的小型载体,在日常工作中经常会遇到需要核对两列数据的情况,本专题为大家提供excel对比两列数据异同相关的文章,大家可以免费体验。

2023.07.25

5141

7

excel重复项筛选标色
excel重复项筛选标色

excel的重复项筛选标色功能使我们能够快速找到和处理数据中的重复值。本专题为大家提供excel重复项筛选标色的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.31

3176

5

excel复制表格怎么复制出来和原来一样大
excel复制表格怎么复制出来和原来一样大

本专题为大家带来excel复制表格怎么复制出来和原来一样大相关文章,帮助大家解决问题。

2023.08.02

2980

3

excel表格斜线一分为二
excel表格斜线一分为二

在Excel表格中,我们可以使用斜线将单元格一分为二。本专题为大家带来excel表格斜线一分为二怎么弄的相关文章,希望可以帮到大家。

2023.08.02

1444

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
ThinkPHP配置开发与CMS后台实战
ThinkPHP配置开发与CMS后台实战

共87课时 | 12.9万人学习

第二十三期_综合实战
第二十三期_综合实战

共89课时 | 11.1万人学习

Layui 快速入门精讲
Layui 快速入门精讲

共5课时 | 1.6万人学习