我運行相同的(Rails的4.2.7.1)在Heroku的兩臺服務器和一個應用程序正在按預期:Rails的HTML編碼裏面JSON不同,同一版本
ActiveSupport::JSON.encode(html: '<p>Hello World</p>')
#=> "{\"html\":\"<p>Hello World</p>\"}
上運行相同的代碼第二服務器產生不同的結果:
ActiveSupport::JSON.encode(html: '<p>Hello World</p>')
#=> "{\"html\":\"\\u003cp\\u003eHello World\\u003c/p\\u003e\"}"
兩個服務器都具有相同的Ruby(紅寶石2.2.6p396),並從我收集到的ENV['LANG']
起着編碼的作用,但兩臺服務器都存儲在同一個價值有:"en_US.UTF-8"
。
感謝您的幫助。
其他詳細信息:兩個服務器生成的字符串都使用UTF-8編碼。
ActiveSupport::JSON.encode(html: '<p>Hello World</p>').encoding
=> #<Encoding:UTF-8>
Ruby是如何編譯的?我查看了從ActiveSupport :: JSON.encode到CRuby源代碼中的'RUBY_ENCODING_H'常量的儘可能多的源代碼。就我所知,如果任何人都覺得繼續下去。編輯:和更多的搜索去與readline支持編譯..?不過,我對這個問題沒有具體的答案 - 抱歉! –