0

这是我的红宝石代码

require 'json'
a=Array.new
value="¿value"
data=value.gsub('¿','-')
a[0]=data
puts a
puts "json is"
puts jsondata=a.to_json

出现以下错误

C:\Ruby193>new.rb
C:/Ruby193/New.rb:3: invalid multibyte char (US-ASCII)
C:/Ruby193/New.rb:3: syntax error, unexpected tIDENTIFIER, expecting $end
value="┐value"
            ^
4

2 回答 2

5

这不是 JSON 问题 — Ruby 无法解码您的源代码,因为它包含多字节字符。默认情况下,Ruby 尝试将文件解码为 US-ASCII,但¿无法以 US-ASCII 表示,因此失败。解决方案是提供如文档中所述的魔术注释。假设您的源文件的编码是 UTF-8,您可以这样告诉 Ruby:

# encoding: UTF-8
# ...
value = "¿value"
# ...
于 2013-06-14T06:24:52.677 回答
0

使用编辑器或 IDE,icktoofay 的解决方案(# encoding: UTF-8- 在第一行)是完美的。

带有 IRB 或 PRY 的 shell 中,很难找到有效的配置。但是有一种解决方法至少可以解决我的编码问题,即输入德语变音符号。

PRY 的解决方法:在 PRY 中,我使用edit命令来编辑输入缓冲区的内容,如此pry wiki 页面中所述。这将打开一个外部编辑器(您可以配置所需的编辑器)。并且编辑器接受不能直接在 PRY 中输入的特殊字符。

于 2013-06-14T09:52:36.550 回答