【问题标题】:Ruby 1.9 and Sass encoding issues. (from ASCII-8BIT to UTF-8)Ruby 1.9 和 Sass 编码问题。 (从 ASCII-8BIT 到 UTF-8)
【发布时间】:2011-08-23 11:35:00
【问题描述】:

我最近升级到 Ruby 1.9,我无法再用 Sass 编译任何东西。

我已经看到了解决方案,如果我放置

 @charset "utf-8";

在我的 .sccs 文件的顶部,它会修复它。但是我仍然遇到错误。这是完整的回溯

我还尝试从我的 CSS 文件中删除任何非 ascii 字符、创建一个新字符等。它只是无法编译。有什么建议吗?

追溯:

Sass 正在关注变化。按 Ctrl-C 停止。

/home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/util.rb:496:in `encode': 不支持转码(从 ASCII-8BIT 到 UTF-8)(参数错误)

来自 /home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/util.rb:496:in _enc' from /home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/util.rb:515:inrescue in block (1 levels) in '

来自/home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/util.rb:508:in `block (1 levels) in '

来自/home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/util.rb:472:in `yield'

来自/home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/util.rb:472:in `default'

来自 /home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/util.rb:472:in `block in check_sass_encoding'

来自/home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/util.rb:471:in `each'

来自 /home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/util.rb:471:in `find'

来自 /home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/util.rb:471:in `check_sass_encoding'

来自 /home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/engine.rb:349:in `check_encoding!'

来自 /home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/engine.rb:316:in `_to_tree'

来自 /home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/engine.rb:291:in `_render'

来自/home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/engine.rb:238:in `render'

来自 /home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/plugin/compiler.rb:319:in `update_stylesheet'

来自 /home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/plugin/compiler.rb:169:in `block in update_stylesheets'

来自/home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/plugin/compiler.rb:167:in `each'

来自 /home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/plugin/compiler.rb:167:in `update_stylesheets'

来自 /home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/plugin/compiler.rb:214:in `watch'

来自/home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/plugin.rb:111:in `method_missing'

来自/home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/exec.rb:408:in `watch_or_update'

来自/home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/exec.rb:294:in `process_result'

来自/home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/exec.rb:41:in `parse'

来自/home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/exec.rb:21:in `parse!'

来自/home/webdev/.gem/repository/gems/sass-3.1.1/bin/sass:8:in `'

来自 /home/webdev/.gem/repository/bin/sass:19:in `load'

来自/home/webdev/.gem/repository/bin/sass:19:in `'

【问题讨论】:

  • 有趣,你的问题是我问题的答案 :) 那是我需要指定 UTF-8 作为编码,这似乎在最新的 sass 中有效

标签: ruby encoding sass


【解决方案1】:

这可能很明显,但是您确定您的 Sass 文件是 UTF-8 编码的吗?任何体面的文本编辑器都可以让你转换编码。

【讨论】:

  • 使用 vim,它会用 :language 报告 utf-8。如果我设置 :set encoding=utf-8,仍然没有运气。
【解决方案2】:

您的 Ruby 环境似乎以某种方式设置为将 Sass 源代码加载为 ASCII-8BIT,也就是 BINARY。这可能是因为您要么将 -Kn 标志传递给 Ruby 进程,要么在加载 Sass 之前在代码中的某个位置将 Encoding.default_external 设置为 Encoding::BINARY。撤消此操作,Sass 应该可以工作。

【讨论】:

  • 感谢您提供的重要信息,但是我该如何调整呢?我只是通过命令行调用 Sass 二进制文件。在 shell 中设置的语言环境也是 utf-8。
【解决方案3】:

我不确切知道问题的核心,但似乎 Ruby 1.9.0(适用于这个 Ubuntu 机器的 apt 版本)和编码存在一些问题。

为了解决这个问题,我使用了https://rvm.io,它是从 Git 下载和编译 Ruby 的助手,为我提供了最新版本。运行后,sass 编译正常,一切正常。

【讨论】:

    【解决方案4】:

    完成@nex3 answer你可以

    打开config.rb文件并添加:

    Encoding.default_external = "UTF-8"
    

    【讨论】:

    • 你在 mac 上哪里可以找到这个文件?
    • 这个答案立即解决了我的问题。在我对其运行 CSS Comb 后,SASS 似乎停止编译,但现在按照这个建议再次完全工作。
    【解决方案5】:

    这发生在我身上,解决方案并不明显:Jet Brains 的 Elena Pogorelova explained in this post that non-ASCII characters in your files route may break SASS,我的情况就是这样。

    users/xxxx/projects/chilediseño/cms/scss (ñ)

    我只需要删除上面名称中的 (ñ),一切正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-14
      • 1970-01-01
      • 1970-01-01
      • 2014-08-26
      • 2017-10-02
      • 2013-05-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多