談笑有鴻儒,往來無白丁

          在恰當的時間、地點以恰當的方式表達給恰當的人...  閱讀的時候請注意分類,佛曰我日里面是談笑文章,其他是各個分類的文章,積極的熱情投入到寫博的隊伍中來,支持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 壞男孩 閱讀(899) 評論(1)  編輯  收藏 所屬分類: 新知識學習

          FeedBack:
          # re: 在RubyOnRails里使用UTF-8及中文字符串
          2006-10-15 10:32 | smallpig
          UTF-8,前幾天,我保存網頁就說,我里面有UTF-8字符,不能正常保存。我到現在還沒明白,不過這篇文字好長,我估計一會再看
            回復  更多評論
            
          主站蜘蛛池模板: 黄冈市| 嘉义县| 常宁市| 五大连池市| 新源县| 侯马市| 新平| 额敏县| 玉门市| 赤峰市| 德保县| 海原县| 射阳县| 烟台市| 常德市| 永城市| 济源市| 昌乐县| 丰城市| 景德镇市| 惠东县| 确山县| 齐齐哈尔市| 昌乐县| 黑山县| 托克逊县| 吉林省| 彰化县| 岐山县| 五莲县| 运城市| 报价| 南投县| 靖西县| 房产| 金华市| 永福县| 左贡县| 鄂温| 金寨县| 开封县|