Sass 默认编码错误
我正在尝试从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