这是一个创建于 872 天前的主题,其中的信息可能已经有所发展或是发生改变。
我本地 css 代码里面中文都是用 unicode 写的,本地调试没问题。
但是 build 之后 unicode 变成了中文(直接看 dist 里面的 css),导致生产环境偶发中文乱码。
项目是 vue3+vite+antdv
其他插件
```
"@vitejs/plugin-vue":"^2.3.1",
"@vitejs/plugin-vue-jsx":."^1.3.10",
"vite":"^2.9.7",
"vite-babel-plugin":"0.0.2",
"vite-plugin-cesium":"1.2.10",
"vite-plugin-commonjs-externals":"00.1.1",
```
8 条回复 • 2023年08月22日 20:57:20 +08:00
zsj1029
1
zsj1029 2023 年 8 月 22 日 via iPhone
Vite3 还是 4 已经把 Unicode 改成中文了,我这边实际使用,Unicode 没遇到问题,升级 vitw 版本可以解决
z13zvxc
3
z13zvxc 2023 年 8 月 22 日 via iPhone ❤️ 1
问题不在于 vite 是 esbuild 打包会转译 css 里面的 unicode 字符串。我没发现 esbuild 有什么选项能支持不转译,我的临时解决办法是把这个 css 文件独立出来直接在 index.html 引用,不让 esbuild 打包。
z13zvxc
6
z13zvxc 2023 年 8 月 22 日
@
oott123 问题是期望
echo 'let \u03C0 = Math.PI' | esbuild --charset=utf8
let \u03C0 = Math.PI;
实际是
echo 'let \u03C0 = Math.PI' | esbuild --charset=utf8
let π = Math.PI;
z13zvxc
7
z13zvxc 2023 年 8 月 22 日
我明白问题了
我们需要 指定 esbuild 对指定问题文件 不使用 --charset=utf8
比如:
echo 'let \u03C0 = Math.PI' | esbuild
let \u03C0 = Math.PI;
得到的就是原始输入 现在问题其实是因为 vite 默认构建选项加了--charset=utf8
Arthur2e5
8
Arthur2e5 2023 年 8 月 22 日 via iPhone
一个不能把 utf8 字节好好标记成 utf8 字节的"生产环境"是更大的问题