.less 文件必须为 utf-8 无 bom 编码,且首行严格为 @charset "utf-8";,否则会导致 less.render() 解析失败或 css 乱码;vs code 需手动选“utf-8”而非“utf-8 with bom”,linux/macos 可用 sed 清除 bom,构建时应避免 shell 重定向,改用 node.js api 或配置 less-loader 显式指定 encoding。

确认 .less 源文件是 UTF-8 无 BOM
VS Code 右下角显示 “UTF-8” 不等于安全——它可能仍是 UTF-8 with BOM。BOM(\uFEFF)会干扰 @charset "UTF-8"; 生效,也会让 less.render() 解析失败。
- 用命令验证:
file -i style.less输出必须含charset=utf-8且不含with BOM - VS Code:右下角点击编码 → “Save with Encoding” → 选
UTF-8(不是UTF-8 with BOM) - 已有 BOM?Linux/macOS 执行:
sed -i '1s/^\xEF\xBB\xBF//' style.less
lessc 命令行编译必须绕过 shell 编码不确定性
lessc input.less > output.css 的行为取决于终端 locale 和重定向机制,不是 Less 本身问题。macOS 或某些 Linux 环境下,即使源文件是 UTF-8,输出也可能变成 ISO-8859-1 字节流。
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
- Linux/macOS:先运行
locale | grep UTF,确保LC_ALL或LANG是en_US.UTF-8或zh_CN.UTF-8,再执行重定向 - PowerShell:改用
lessc input.less | Out-File -Encoding UTF8 output.css - 最稳妥:弃用 shell 重定向,用 Node.js 脚本调用 API,显式传
'utf8'参数(读、编、写全程锁定)
Webpack + less-loader 中必须显式控制 encoding
less-loader 默认调用 fs.readFileSync,不传 encoding 参数时,Node.js 行为随版本和系统浮动,尤其在 Windows 上易退化为 GBK 解码。
- 在
webpack.config.js的less-loader配置中,加implementation: require('less')(文档未强调但实测必需) - 确保
css-loader≥ v6.0;旧版对@charset "UTF-8";支持不完整 - 在 .less 文件顶部第一行手动加:
@charset "UTF-8";(前面不能有任何空行、注释或 BOM)
@charset "UTF-8" 不是万能解药,它只在文件真实编码匹配时才起作用
很多人加了 @charset "UTF-8"; 还乱码,是因为文件字节本身不是 UTF-8 —— 浏览器看到这个声明后,会强制用 UTF-8 解码,结果把 GBK 字节当 UTF-8 解,反而更乱。
-
@charset必须是 CSS 文件绝对第一行,无空格、无 BOM、无注释 - HTTP 服务下,还需检查响应头:
Content-Type: text/css; charset=utf-8必须存在且与文件真实编码一致 - 本地双击打开
file://协议时,浏览器依赖文件 BOM 或编辑器保存格式,无 BOM 时行为不一致 —— 此时唯一可靠手段是确保文件确实是 UTF-8 无 BOM +@charset正确放置
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










