JSON与JRuby-不在UTF-8中解析结果

JSON与JRuby-不在UTF-8中解析结果,ruby,json,jruby,Ruby,Json,Jruby,我在rails项目中使用它来解析ajax发送的JSON字符串,但是我发现尽管JSON字符串是UTF-8格式的,但是默认情况下,结果是在ASCII-8BIT格式,如下所示 jruby-1.6.7 :068 > json_text = '["に到着を待っている"]' => "[\"に到着を待っている\"]" jruby-1.6.7 :069 > json_text.encoding => #<Encoding:UTF-8> jruby-1.6.7 :070 &

我在rails项目中使用它来解析ajax发送的JSON字符串,但是我发现尽管JSON字符串是UTF-8格式的,但是默认情况下,结果是在
ASCII-8BIT
格式,如下所示

jruby-1.6.7 :068 > json_text = '["に到着を待っている"]'
 => "[\"に到着を待っている\"]"
jruby-1.6.7 :069 > json_text.encoding
 => #<Encoding:UTF-8>
jruby-1.6.7 :070 > json_parsed = JSON.parse(json_text)
 => ["\u00E3\u0081\u00AB\u00E5\u0088\u00B0\u00E7\u009D\u0080\u00E3\u0082\u0092\u00E5\u00BE\u0085\u00E3\u0081\u00A3\u00E3\u0081\u00A6\u00E3\u0081\u0084\u00E3\u0082\u008B"]
jruby-1.6.7 :071 > json_parsed.first.encoding
 => #<Encoding:ASCII-8BIT>
jruby-1.6.7:068>json_text='[“に到着を待っている"]'
=> "[\"に到着を待っている\"]"
jruby-1.6.7:069>json_text.encoding
=> #
jruby-1.6.7:070>json_parsed=json.parse(json_文本)
=>[“\u00E3\u0081\u00AB\u00E5\u0088\u00B0\u00E7\u009D\u0080\u00E3\u0082\u0092\u00E5\u00BE\u0085\u00E3\u0081\u00A3\u00E3\u0081\u00A6\u00E3\u00E3\u0081\u0084\u00E3\u0082\u008B”]
jruby-1.6.7:071>json_parsed.first.encoding
=> #
我不希望它被转义,我希望得到一个UTF-8结果。有没有办法设置它?我检查了JSON项目的文档,找到了方法
JSON.parse
的非编码选项。也许我遗漏了什么,我怎么能做到

更新:
正如@fl00r所通知的,该示例在MRI中运行良好,但在JRUBY中运行不正常。这看起来像是一个bug,因为在使用纯版本时,它实际上可以工作:

jruby-1.6-head :001 > require 'json/pure'
 => true 
jruby-1.6-head :002 > json_text = '["に到着を待っている"]'
 => "[\"に到着を待っている\"]" 
jruby-1.6-head :003 > json_parsed = JSON.parse(json_text)
 => ["に到着を待っている"] 
jruby-1.6-head :004 > json_parsed.first.encoding
 => #<Encoding:UTF-8> 
jruby-1.6-head :005 >

设置
Encoding.default\u internal=Encoding::UTF\u 8
可能会有帮助,但我不确定这在JRubyThanks上是如何工作的@fl00r指出,虽然我在MRI上运行了我的所有测试,但我没有想到在MRI上尝试。@Darth看到
Encoding.default\u internal
不起作用。非常感谢你的发现。是的,就在迪斯科之后如果它在MRI中工作,而不是在JRUBY中,我为它开了一张罚单。
json
json/pure
之间有什么区别?
json
通常使用C实现(或者在JRUBY中使用Java实现)解析JSON,但它也提供了一个纯ruby实现作为后备。谢谢,让我们看看情况如何,你是JSON的开发人员吗?再次更新,这似乎已经被修复。我不是JSON开发人员,只是一个jruby爱好者!
$ git clone https://github.com/flori/json.git
$ cd json
$ rake jruby_gem
$ jruby -S gem install pkg/json-1.6.6-java.gem