Vin*_*ent 3 ruby encoding ascii
我的应用程序需要处理一些国际字符,即ä,ü,ö和ß,它们仍然是ascii.
当我在处理这些字符时测试ruby的行为时,我收到了这个错误:
test.rb:1: invalid multibyte char (US-ASCII)
test.rb:1: invalid multibyte char (US-ASCII)
Run Code Online (Sandbox Code Playgroud)
对于此代码:
puts "i like my chars: ä, ü, ö and ß!"
Run Code Online (Sandbox Code Playgroud)
但奇怪的是:当使用Interactive Ruby Shell时,我没有错误!
编辑:在我的应用程序中,我正在从外部API检索数据.上面的代码只是一个例子!
Jon*_*eet 11
不,这些字符不是 ASCII.ASCII没有任何高于Unicode U + 007F(十进制127)的值.有关更多详细信息,请参阅维基百科ASCII条目.
我怀疑交互式Ruby shell采用shell的本机编码,而不是ASCII.
你有办法指定.rb文件的编码吗?如果是这样,请使用 - 或更改脚本,使它们真正是 ASCII.
小智 8
将魔术评论# coding: utf-8放在你的脚本的开头(如果你正在使用shebang,则在第二行).
#!/usr/local/bin/ruby
# coding: utf-8
puts "i like my chars: ä, ü, ö and ß!"
Run Code Online (Sandbox Code Playgroud)