最稳解法是将layui.js或layui.all.js中分页相关中文(如“共”“条”“页”“到”“跳”)统一替换为Unicode编码,因laypage内部混用原始中文与Unicode导致解析不一致;替换后需清除浏览器、CDN及构建缓存,并确认JS响应头含charset=utf-8。
直接改 layui.js 或 layui.all.js 里的中文为 unicode 是最稳的解法,其他方式(比如改 tomcat、加过滤器)容易漏掉或失效,尤其在前后端分离或静态资源托管场景下。
为什么分页中文会一半乱码
laypage 内部混用了两种写法:部分中文用原始字符(如 "共"),部分用 Unicode(如 "\u5171")。当 JS 文件保存编码不是 UTF-8,或被服务器以非 UTF-8 编码传输时,原始中文就会解析失败,而 Unicode 始终可靠。
- 常见现象:分页栏显示
共100条→??100??,但“首页”“上一页”按钮文字正常 - 本质是文件编码与 JS 解析不一致,不是后端返回问题
- 即使后端已设
Content-Type: text/html;charset=utf-8,静态 JS 文件仍由 Web 服务器(Nginx/Apache/Tomcat 静态资源路径)单独处理,编码策略不同
怎么把中文替成 Unicode
只替换 laypage 相关字符串,不用动整个 layui 源码。重点找这几个词:"共"、"条"、"页"、"到"、"跳" —— 通常出现在 laypage.js 的模板拼接段里,比如 '共'+a.count+"条" 这类代码。
- 用在线工具转:https://www.bejson.com/convert/unicode_chinese/ ,输入“共”得
\u5171 - 替换时注意加反斜杠和引号:原
"共"→ 改成"\u5171";原'条'→ 改成'\u6761' - 别漏掉模板字符串中的中文,例如
"${n}条/页"要改成"${n}\u6761/\u9875" - 改完保存为 UTF-8 编码(VS Code / WebStorm 默认就是,记事本需手动选“UTF-8 无 BOM”)
改完还是乱码?先查这三件事
浏览器缓存、CDN 缓存、构建产物覆盖,三者任一没清干净,你看到的都是旧 JS。
- 强制刷新 JS:浏览器按
Ctrl+Shift+R(Windows)或Cmd+Shift+R(Mac),不是普通 F5 - 检查 Network 面板里
layui.js的响应头,确认Content-Type含charset=utf-8;若没有,说明 Web 服务器没配对 - 如果是 webpack/vite 构建项目,确认你改的是
node_modules/layui-v2.8.18/layui.js这类源文件,而不是构建后输出的dist/js/layui.min.js—— 后者要重新 build 才生效
真正麻烦的不是替换本身,而是你不知道哪一行 JS 里藏着一个没转的 "页" —— 它可能藏在压缩版里,也可能被某个插件动态注入。所以优先改未压缩版 layui.js,再确保上线用的是它。


















