談笑有鴻儒,往來無白丁

          在恰當的時間、地點以恰當的方式表達給恰當的人...  閱讀的時候請注意分類,佛曰我日里面是談笑文章,其他是各個分類的文章,積極的熱情投入到寫博的隊伍中來,支持blogjava做大做強!向dudu站長致敬>> > 我的微博敬請收聽
          結合RubyOnRails官方Wiki上的一些介紹和自己實踐寫的。這個方法就是在使用rails的內置的長度校驗的時候要考慮到中文一般占用3個字符。

          Ruby本身不支持UTF-8,但是我們可以使用一些辦法使用8bit的字符來儲存UTF-8編碼后的字符串.但是這會導致一些字符串函數出現問題,可以通過使用jcode包里的函數來替換原來的字符串函數,如length可以用jlength替換。
          1、首先,我們需要在public/dispatch.cgi文件的#!/path/to/ruby后面加上-Ku -rjcode
          2、然后,需要使用一個before_filter來輸出http頭,表示使用utf-8字符集。
          class ApplicationController < ActionController::Base
          before_filter :set_charset

          def set_charset
          @headers["Content-Type"] = "text/html; charset=utf-8"
          end
          end
          3、接著,如果要在Safari瀏覽器里使用rails的ajax幫助函數,則必須加入以下代碼
          class ApplicationController < ActionController::Base
          after_filter :fix_unicode_for_safari

          # automatically and transparently fiixes utf-8 bug
          # with Safari when using xmlhttp
          def fix_unicode_for_safari
          if @headers["Content-Type"] == "text/html; charset=utf-8" and
          @request.env['HTTP_USER_AGENT'].to_s.include? 'AppleWebKit' then
          @response.body = @response.body.gsub(/([^\x00-\xa0])/u) { |s| "&#x%x;" % $1.unpack('U')[0] }
          end
          end

          4、另外,可能需要調整數據庫的設置能夠存儲utf-8字符串。

          5、必須把rb源文件以及rhtml等模版文件都保存為utf-8格式。
          這樣你就可以直接在rb源文件里輸入中文了。

          posted on 2006-10-12 15:44 壞男孩 閱讀(897) 評論(1)  編輯  收藏 所屬分類: 新知識學習

          FeedBack:
          # re: 在RubyOnRails里使用UTF-8及中文字符串
          2006-10-15 10:32 | smallpig
          UTF-8,前幾天,我保存網頁就說,我里面有UTF-8字符,不能正常保存。我到現在還沒明白,不過這篇文字好長,我估計一會再看
            回復  更多評論
            
          主站蜘蛛池模板: 朝阳县| 侯马市| 河北省| 康马县| 巴彦淖尔市| 林口县| 扶沟县| 潼南县| 平舆县| 石城县| 衡阳市| 闽侯县| 科技| 乐山市| 博兴县| 丰镇市| 丘北县| 新泰市| 藁城市| 新余市| 嘉黎县| 兴隆县| 红安县| 同心县| 柳江县| 托里县| 盘山县| 孝感市| 茂名市| 九龙城区| 科技| 高尔夫| 景宁| 肇州县| 垣曲县| 甘德县| 双柏县| 新密市| 延吉市| 隆化县| 洪湖市|