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

为什么Sass错误地转换css内容?,css,sass,Css,Sass,我的.scss文件中有以下规则: .listing-price:before { ... content: "♥"; 无论出于何种原因,运行sass--update foo.scss:foo.css--style expanded将其转换为: .listing-price:before { ... content: "ΓÖÑ"; 为什么会发生这种情况?我需要做些什么来防止它?Sass应该自动检测文档中的字符编码。如果不是出于某种原因,您可以使用@charset“UTF

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

.listing-price:before {
   ...
   content: "♥";
无论出于何种原因,运行
sass--update foo.scss:foo.css--style expanded
将其转换为:

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

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

Sass应该自动检测文档中的字符编码。如果不是出于某种原因,您可以使用
@charset“UTF-8”将其显式设置为UTF-8

来自SASS文档:

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

要显式指定样式表的编码,请使用@charset声明,就像在CSS中一样。添加@charset“编码名称”;在样式表的开头(在任何空白或注释之前),Sass将把它解释为给定的编码。请注意,无论使用何种编码,它都必须可转换为Unicode

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

演示:

文档:

设置

@charset "utf-8";
在scss文件的顶部,使用UTF范围内的字符


谢谢。关键(我第一次错过了)是@charset声明必须是文件中绝对的第一件事,在任何注释之前。它确实让我下载了最新的SASS编译器。
@charset "utf-8";