【问题标题】:Why does Sass incorrectly convert css content? [duplicate]为什么 Sass 会错误地转换 css 内容? [复制]
【发布时间】:2017-12-07 04:03:31
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: css sass


    【解决方案1】:

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

    来自 SASS 文档:

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

    要明确指定样式表的编码,请使用 @charset 声明,就像在 CSS 中一样。添加@charset“编码名称”;在样式表的开头(在任何空格或 cmets 之前),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

    【讨论】:

    • 谢谢。关键(我第一次错过了)是@charset 声明必须是文件中的绝对第一,在任何 cmets 之前。
    • 它确实让我下载了最新的 SASS 编译器。
    【解决方案2】:

    设置

    @charset "utf-8";
    

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

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

    【讨论】:

      猜你喜欢
      • 2022-01-22
      • 2017-07-30
      • 2021-08-05
      • 2020-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-01
      相关资源
      最近更新 更多