当'¿'存在时,无法将数组数据转换为json

时间:2013-06-14 06:21:18

标签: ruby json

这是我的红宝石代码

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"
            ^

2 个答案:

答案 0 :(得分:5)

这不是JSON问题 - Ruby无法解码您的源,因为它包含多字节字符。默认情况下,Ruby尝试将文件解码为US-ASCII,但¿在US-ASCII中无法表示,因此失败。解决方案是提供一个神奇的评论as described in the documentation。假设您的源文件的编码是UTF-8,您可以这样告诉Ruby:

# encoding: UTF-8
# ...
value = "¿value"
# ...

答案 1 :(得分:0)

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

在具有IRB或PRY 的 shell中,很难找到有效的配置。但有一种解决方法至少适用于我的编码问题,即输入德语变音字符。

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