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

我尝试使用命令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'}) 

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

  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 `' 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 `' from script/rails:6:in `require' from script/rails:6:in `' 

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

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

 # encoding: UTF-8 

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

 # encoding: Windows-1252 

另一种常见格式是ISO Latin1 :

 # encoding: ISO-8859-1 

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

如果您需要在格式之间进行转换,通常可以在编码器中打开,并使用您想要的编码进行“另存为…”打开。 否则,您可以尝试使用iconv为您转换它。

 # -*- encoding : utf-8 -*- 

在文件的顶部

将这两行放在脚本的顶部。

 #!/bin/env ruby # encoding: utf-8