1

compass watch my_project在 Windows XP 上运行。

  • index.scss

    @charset "UTF-8";
    @import 'partial';
    // ...
    
  • _partial.scss

    p:before {
        content: '•';
    }
    
  • config.rb

    encoding = "utf-8"
    
  • 生成index.css

    @charset "UTF-8";
    /* line 1, ../sass/_partial.scss */
    p:before {
      content: 'ÔÇó';
    }
    // ...
    

如何让 Compass/Sass 将部分解释为 UTF-8?是否可以设置一个环境变量来更改 Ruby 使用的默认字符编码(compass是 Ruby 应用程序)?

4

3 回答 3

5

在我的 Windows 7 机器上,它可以将以下行添加到我的项目的config.rb

Encoding.default_external = 'utf-8'

还发现了一个很棒的指南针/更少/JS压缩的GUI:http: //koala-app.com/

于 2014-04-28T10:25:32.790 回答
3

除了按照@NIA 的建议转义字符(可预测,但很乏味)之外,还有其他两种方法可以解决这个问题:

  1. 添加@charset "utf-8";到 _partial.scss 的顶部
  2. 将 _partial.scss 保存为“带有 BOM 的 UTF-8”。

从我到目前为止所读到的内容来看,这似乎是一个通用的 Ruby/WIN 问题,在构建从磁盘上的文件读取的字符串时,编码检测/回退不正确。

于 2014-09-02T09:26:39.407 回答
3

也许这不是一个直接的答案,但即使你不能让 Compass/Sass 像你想要的那样解释 UTF,你也可以简单地尝试使用 unicode 转义:

p:before {
    content: "\2022";
}

其中 2022 是符号的十六进制代码。为了得到这个代码,我在 irb 中执行了这个:

irb> "•"[0].ord.to_s(16)
=> "2022"

如果您有很多 unicode 字符,可能不是一个好的解决方案,但至少是一种解决方法。例如,FontAwesome在其样式表中使用它。

于 2013-01-24T12:25:54.847 回答