这是我的红宝石代码
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"
^
答案 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中输入的特殊字符。