为什么Sass会添加不正确的@charset规则?

Šim*_*das 14 css sass character-encoding phpstorm

我用

sass --watch scss:css
Run Code Online (Sandbox Code Playgroud)

让Sass /css为每个SCSS文件(从我的/scss目录)自动创建CSS文件(并将它们放在目录中).

在我的SCSS文件中,我有这个:

.foo::before {
    content: "?";
}
Run Code Online (Sandbox Code Playgroud)

当我在浏览器中测试网页时,不会显示该"播放"字符 - 相反,我会看到一堆带有carons和其他重音的怪异字母.

我检查了生成的CSS文件并在第一行注意到了这一点:

@charset "CP852";
Run Code Online (Sandbox Code Playgroud)

然后我手动将其更改为:

@charset "UTF-8";
Run Code Online (Sandbox Code Playgroud)

这导致我的"播放"按钮被正确呈现.

现在,为什么Sass将charset设置为"CP852"?我在PhpStorm中编写SCSS文件,报告SCSS文件确实是UTF-8编码(我在PhpStorm的状态栏中看到).

Bla*_*lan 30

尝试添加@charset "UTF-8";到您的原始SCSS文件,SASS不应该覆盖它/添加它自己的.

  • 引自[SASS_REFERENCE](http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#options):*添加@charset"encoding-name"; 在样式表的开头(在任何空格或注释之前),Sass会将其解释为给定的编码.* (5认同)
  • 似乎`@charset"UTF-8"必须在样式表的第一行. (4认同)

Vol*_* E. 5

就像@ Alireza-Fatahi在这个答案中所述,您可以在CSS输出中保存一行,而是在外部文件上使用默认的Charset,方法是将此行添加到config.rb项目文件夹中:

Encoding.default_external = "UTF-8"
Run Code Online (Sandbox Code Playgroud)