談笑有鴻儒,往來無白丁

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

          FeedBack:
          # re: 在RubyOnRails里使用UTF-8及中文字符串
          2006-10-15 10:32 | smallpig
          UTF-8,前幾天,我保存網頁就說,我里面有UTF-8字符,不能正常保存。我到現在還沒明白,不過這篇文字好長,我估計一會再看
            回復  更多評論
            
          主站蜘蛛池模板: 元氏县| 德昌县| 静海县| 勐海县| 潞城市| 吉首市| 博湖县| 太康县| 兴业县| 巨鹿县| 鄂托克旗| 璧山县| 巫溪县| 伊金霍洛旗| 保靖县| 盐亭县| 盐边县| 沾益县| 西林县| 汝城县| 双鸭山市| 兴山县| 鄂托克旗| 山东| 开阳县| 南召县| 南投市| 弥渡县| 祁门县| 新巴尔虎左旗| 晋中市| 惠来县| 裕民县| 沾化县| 当雄县| 调兵山市| 建始县| 孟连| 安丘市| 天水市| 遂昌县|