2011-06-06 86 views
1

我與西里爾字符的軌道逸出問題JSON輸出:西里爾字符轉義問題JSON + EXTJS

{"success":true,"total":"2","offices":[{"address":"addr","created_at":"2011-06-03T11:55:09Z","description":"desc","id":1,"name":"Office 1","published":true,"updated_at":"2011-06-05T13:48:35Z"},{"address":"\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd","created_at":"2011-06-03T12:32:19Z","description":"\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd","id":2,"name":"\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd 2","published":null,"updated_at":"2011-06-05T13:49:51Z"}]} 

他們不能正確解碼EXTJS並導致電網 2

頁面編碼是UTF8。 Mysql和Rails配置設置爲UTF8

任何想法?

+0

哪個紅寶石和哪個rails版本? – 2011-06-06 12:37:09

+0

rails 3.0.7 ruby​​ 1.9.2 – xplain 2011-06-06 12:46:08

+0

我可以證實這個問題。使用相同版本的rails和ruby,所有非ascii字母都被寫爲\ ufffd(包括瑞典的「ÅÄÖ」和Cyrilic「ЯЧЩ」)。我已將問題隔離到to_json函數。 – Mika 2011-08-09 10:40:02

回答

0

任何代碼? 我所看到的只是你的角色已經在json輸出中失真了(如果仔細看看,它們都是一樣的 - 「\ ufffd \ ufffd \ ufffd \ ufffd \ ufffd \ ufffd」)。

+0

是的一段時間後,我還注意到,輸出是用以下代碼生成的 [code] def index ......... @offices = Office.find(:all,:conditions => buildFilterOptions(params [:filter]),:limit => gf_limit,:offset => gf_offset,:order => gf_sortcol +''+ gf_sortdir) render:json => {:success => true,:total => gf_total.to_s,:offices => @offices} end [/ code] – xplain 2011-06-06 13:04:42

+0

嘗試添加response.headers ['Content-Type'] ='application/json;字符集= UTF-8' ;在渲染之前。 – 2011-06-06 13:07:45

+0

問題是MySQL的寶石,解決方案在這裏解釋:[鏈接](http://gnuu.org/2009/11/06/ruby19-rails-mysql-utf8/) 10x給大家 – xplain 2011-06-06 14:52:37