部分错误的编码

时间:2013-01-24 12:07:16

标签: compass-sass sass

我在Windows XP上运行compass watch my_project

  • 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将partial解释为UTF-8?在那儿 也许是我可以设置为更改默认值的环境变量 Ruby使用的字符编码(compass是一个Ruby应用程序)?

3 个答案:

答案 0 :(得分:5)

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

Encoding.default_external = 'utf-8'

还为罗盘/减少/ JS压缩找到了一个很棒的GUI:http://koala-app.com/

答案 1 :(得分:3)

也许这不是一个直接的答案,但即使你不能让Compass / Sass按你的意愿解释UTF,你也可以尝试使用unicode escape:

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

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

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

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

答案 2 :(得分:3)

除了@NIA建议的逃避角色(可预测,但乏味)之外,还有另外两种方法:

  1. @charset "utf-8";添加到_partial.scss
  2. 的顶部
  3. 将_partial.scss保存为“带BOM的UTF-8”。
  4. 根据我到目前为止所读到的内容,这似乎是一个通用的Ruby / WIN问题,在构建从磁盘上的文件读取的字符串时,编码检测/回退不正确。