Sass 默认编码错误

2 投票
2 回答
1186 浏览
提问于 2025-04-18 07:14

我正在尝试从Python中调用Sass,但遇到了一些困难。

如果我在命令行中运行以下命令,它是可以正常工作的:

sass /path/to/style.scss /path/to/style.css --style=compressed

这个命令在命令行中运行没问题,但当我试图通过Python脚本调用它时,就出错了:

import subprocess
subprocess.check_output(['sass', '/path/to/style.scss', '/path/to/style.css', '--style=compressed'])

我收到以下错误信息:

语法错误:无效的US-ASCII字符 "\xE2"

我看到有人说可以通过在每个有编码错误的文件顶部添加 @charset "UTF-8"; 来解决这个问题。

但问题是文件很多,而且很多文件是在bower包里,所以逐个添加并不是个好办法。

我还看到可以在Sass命令后面加上这个选项:--default-encoding="UTF-8",但是当我尝试这个时,无论是在命令行还是在Python中,都会出现这个错误:

ArgumentError: 未知的编码名称 - "UTF-8"

有没有人知道其他的解决办法,或者为什么在命令行中可以工作,而在Python中调用就不行呢?

2 个回答

0

SASS 文档 提到过这个问题

编码

在 Ruby 1.9 及更高版本中,Sass 能够识别文档的字符编码。Sass 会根据 CSS 的规范来判断样式表的编码方式,并会退回到 Ruby 字符串的编码。这意味着它会先检查 Unicode 字节顺序标记,然后是 @charset 声明,最后是 Ruby 字符串编码。如果这些都没有设置,它会默认认为文档是 UTF-8 编码。

如果你想明确指定样式表的编码,可以像在 CSS 中一样使用 @charset 声明。<...>

所以,这里有很多选择。

关于“Ruby 字符串编码”部分,可以参考 将 UTF-8 设置为 Ruby 1.9.3 的默认编码

2

试试这个:

sass --default-encoding UTF-8 

撰写回答