为什么Sass错误地转换css内容?

时间:2017-12-06 19:29:34

标签: css sass

我的.scss文件中有以下规则:

.listing-price:before {
   ...
   content: "♥";

无论出于何种原因,运行sass --update foo.scss:foo.css --style expanded会将其转换为:

.listing-price:before {
   ...
   content: "ΓÖÑ";

为什么会发生这种情况,我需要做些什么来阻止它?

2 个答案:

答案 0 :(得分:2)

Sass应该在您的文档上自动检测字符编码。如果由于某种原因,您可以使用@charset "UTF-8";

将其明确设置为UTF-8

来自SASS文档:

  

在Ruby 1.9及更高版本上运行时,Sass知道文档的字符编码。 Sass遵循CSS规范来确定样式表的编码,并回退到Ruby字符串编码。这意味着它首先检查Unicode字节顺序标记,然后检查@charset声明,然后检查Ruby字符串编码。如果没有设置,则假定文档为UTF-8。

     

要明确指定样式表的编码,请使用@charset声明,就像在CSS中一样。添加@charset" encoding-name&#34 ;;在样式表的开头(在任何空格或注释之前),Sass会将其解释为给定的编码。请注意,无论使用何种编码,都必须可以转换为Unicode。

     

Sass将始终将其输出编码为UTF-8。当且仅当输出文件包含非ASCII字符时,它将包含@charset声明。在压缩模式下,使用UTF-8字节顺序标记代替@charset声明。

@charset "UTF-8";
.listing-price:before {
    content: "♥";
}

<强>演示:

https://www.sassmeister.com/gist/6326e75075795d1c265d26467c06518c

<强>文档:

http://sass-lang.com/documentation/file.SASS_REFERENCE.html

答案 1 :(得分:2)

@charset "utf-8";

在scss文件的顶部,您使用UTF范围内的字符

https://github.com/sass/sass/issues/1663