"In,ü,ö,ß的无效多字节字符(US-ASCII)"错误是Ascii!

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)