【问题标题】:Getting "Invalid multibyte char (US-ASCII)" when requiring file in Ruby在 Ruby 中需要文件时获取“无效的多字节字符(US-ASCII)”
【发布时间】:2016-04-04 07:20:07
【问题描述】:

这个问题已经添加了,但我的情况似乎有点不同。

机器: Windows Server 2012 Ruby: 版本 1.9.3 p484

我有我的主 ruby​​ 文件 file1.rb:

module Sass::Script::Functions
  def dosome()
    # Doing some stuff
    begin
      success = require_relative 'myfile2.rb'
    rescue Exception => e
      puts "Error: #{e.message} - #{e.backtrace}!"
    end
  end
end

这是我的file2.rb

my_var = 'Hello world!'

我收到此错误:

C:/myproject/file2.rb:1: 无效的多字节字符 (US-ASCII) ["C:/myproject/file1.rb:31:in require_relative'", "C:/myproject/file1.rb:31:indosome'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/script/tree/funcall.rb:139:in _perform'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/script/tree/node.rb:50:in perform'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:384:in visit_prop'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/base.rb:36:in visit'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:158:in block in visit'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/stack.rb:79:in block in with_base'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/stack.rb:115:in with_frame'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/stack.rb:79:in with_base'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:158:in visit'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:289:in block (2 个级别) in visit_if'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:289:in map'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:289:in block in visit_if'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:179:in with_environment'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:288:in visit_if'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/base.rb:36:in visit'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:158:in block in visit'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/stack.rb:79:in block in with_base'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/stack.rb:115:in with_frame'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/stack.rb:79:in with_base'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:158:in visit'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:491:in block (2 levels) in visit_directive'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:491:in map'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:491:in block in visit_directive'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:179:in with_environment'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:490:in visit_directive'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/base.rb:36:in visit'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:158:in block in visit'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/stack.rb:79:in block in with_base'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/stack.rb:115:in with_frame'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/stack.rb:79:in with_base'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:158:in visit'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:353:in block (4 个级别) in visit_mixin'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:353:in map'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:353:in block (3 个级别) in visit_mixin'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:179:in with_environment'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:353:in block (2 个级别) in visit_mixin'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:84:in perform_arguments'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:348:in block in visit_mixin'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/stack.rb:98:in block in with_mixin'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/stack.rb:115:in with_frame'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/stack.rb:98:in with_mixin'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:336:in visit_mixin'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/base.rb:36:in visit'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:158:in block in visit'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/stack.rb:79:in block in with_base'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/stack.rb:115:in with_frame'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/stack.rb:79:in with_base'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:158:in visit'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:315:in block (2 levels) in visit_import'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:315:in map'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:315:in block in visit_import'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/stack.rb:88:in block in with_import'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/stack.rb:115:in with_frame'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/stack.rb:88:in with_import'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:312:in visit_import'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/base.rb:36:in visit'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:158:in block in visit'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/stack.rb:79:in block in with_base'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/stack.rb:115:in with_frame'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/stack.rb:79:in with_base'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:158:in visit'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:315:in block (2 个级别) in visit_import'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:315:in map'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:315:in block in visit_import'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/stack.rb:88:in block in with_import'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/stack.rb:115:in with_frame'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/stack.rb:88:in with_import'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:312:in visit_import'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/base.rb:36:in visit'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:158:in block in visit'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/stack.rb:79:in block in with_base'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/stack.rb:115:in with_frame'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/stack.rb:79:in with_base'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:158:in visit'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/base.rb:52:in block in visit_children'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/base.rb:52:in map'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/base.rb:52:in visit_children'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:167:in block in visit_children'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:179:in with_environment'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:166:in visit_children'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/base.rb:36:in block in visit'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:186:in visit_root'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/base.rb:36:in visit'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:157:in visit'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/visitors/perform.rb:8:in visit'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/root_node.rb:36:in css_tree'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/tree/root_node.rb:29:in render_with_sourcemap'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/engine.rb:368:in _render_with_sourcemap'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/engine.rb:285:in render_with_sourcemap'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/plugin/compiler.rb:490:in update_stylesheet'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/plugin/compiler.rb:215:in block in update_stylesheets'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/plugin/compiler.rb:209:in each'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/plugin/compiler.rb:209:in update_stylesheets'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/plugin.rb:82:in update_stylesheets'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/exec/sass_scss.rb:350:in watch_or_update'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/exec/sass_scss.rb:50:in process_result'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/exec/base.rb:52:in parse'", "C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/lib/sass/exec/base.rb:19:in parse!'", “C:/tools/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.4.9/bin/scss:13:in <top (required)>'", "C:/myproject/scss:23:inload'", "C:/myproject/scss:23:in `'"]

即使file2.rb 里面没有文本,而且如果我将# coding: utf-8 添加为file1.rbfile2.rb 的第一行,我也会得到这个!

我做错了什么?如何成功要求/导入file2.rb

SASS

如您所见,这里涉及到一些 SASS。我不知道这是否相关。我执行脚本的方式实际上是调用 SASS 编译器,该编译器将对一些 .scss 文件进行操作。在我的一个样式表中,我引用了 dosome 函数,这就是调用该函数的方式。

【问题讨论】:

  • 我应用了一些编辑。原始文件名不同。我必须提取最重要的逻辑,因为原始文件非常大,将它们全部粘贴在这里是没有意义的
  • 您能否制作一个显示此行为的最小程序,例如:一个包含 require_relative 而没有其他内容的程序?
  • 使用十六进制编辑器查看 file1.rb 可能也是值得的。也许你的代码中有一些奇怪的字符,只是没有显示出来。
  • @user1934428:我试试看!
  • 和以前一样的问题:(

标签: ruby sass rubygems


【解决方案1】:

这似乎是一个编码问题。 尝试添加:

# encoding: utf-8

在脚本的开头。

如果可行,您可以删除注释,并设置两个环境变量运行:

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

应该为编译器添加正确的标签。

但是,您使用的是哪个版本的 ruby​​?从 Ruby 2.0 开始就不需要这些东西了,因为 UTF-8 会自动检测到。

【讨论】:

  • 我在问题开头写了ruby的版本。另外我已经写过我尝试过你的方法 dvxam ... :)
  • @dvxam:我同意这应该是一个编码问题,但如果 R​​uby 真的相信字符串的编码是 US-ASCII,它怎么能抱怨“多字节”字符呢? US-ASCII 中没有这样的东西,我原以为每个字节都会被简单地解释为“原样”。当然你会在输出中得到垃圾字符,但我不希望出现错误消息。
  • @user1934428:该错误消息措辞不当。这基本上意味着 Ruby 遇到了一个值 >127 的字符,如果这个 UTF-8 将是多字节序列的一部分。更好的措辞只是“无效字符(US-ASCII)”,没有“多字节”。
猜你喜欢
  • 2011-04-10
  • 2010-12-16
  • 2011-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多