无效的多字节字符(UTF-8)错误,Ruby

Em *_*Sta 3 ruby ruby-on-rails ruby-on-rails-3

我尝试使用命令rails runner在rails中运行ruby脚本.ruby文件,看起来像这样,应该创建新的患者:

 Patient.create!({:vorname => 'Josepha', :nachnahme => 'Brecht', :geburtsdatum => '25.04.1963', :strasse => 'Umdorf', :ort => 'Wörthss', :plz => '93093'})
 Patient.create!({:vorname => 'Tumba', :nachnahme => 'Hoch', :geburtsdatum => '17.77.1956', :strasse => 'Hamaß 1', :ort => 'Brenn', :plz => '93189'})
Run Code Online (Sandbox Code Playgroud)

但不知怎的,我的代码在德语方面存在问题!我编程初学者,不知道我要改变什么!感谢帮助!

 C:\Sites\what>rails runner patienten.rb
 C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-3.2.13/lib/rails/c
 ommands/runner.rb:51:in `eval': patienten.rb:2: invalid multibyte char (UTF-8) (
 SyntaxError)
 patienten.rb:2: syntax error, unexpected tIDENTIFIER, expecting '}'
 ...> 'Schlossberg', :ort => 'Wörth', :plz => '93086'})
 ...                               ^
 patienten.rb:2: syntax error, unexpected tINTEGER, expecting $end
 ...:ort => 'Wörth', :plz => '93086'})
 ...                               ^
    from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-3.2.1
 3/lib/rails/commands/runner.rb:51:in `<top (required)>'
    from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-3.2.1
 3/lib/rails/commands.rb:64:in `require'
    from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-3.2.1
 3/lib/rails/commands.rb:64:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'
Run Code Online (Sandbox Code Playgroud)

tad*_*man 9

这个文件是什么格式的?你确定它是UTF-8而不是Windows 1252,这是Windows中的默认设置吗?

在Ruby 1.9中,文件中的标题需要指示使用的实际格式:

# encoding: UTF-8
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,您可能需要尝试其他人:

# encoding: Windows-1252
Run Code Online (Sandbox Code Playgroud)

另一种常见格式是ISO Latin1:

# encoding: ISO-8859-1
Run Code Online (Sandbox Code Playgroud)

1252和8859-1都是单字节字符集,每个字符总是一个字节,其中UTF-8是可变长度,每个字符是一个或多个字节.

如果您需要在格式之间进行转换,通常可以使用您想要的编码编码识别的编辑器和"另存为..."中打开.否则,您可以尝试使用iconv为您转换它.