子在川上曰

            逝者如斯夫不舍晝夜
          隨筆 - 71, 文章 - 0, 評論 - 915, 引用 - 0
          數(shù)據(jù)加載中……

          Rails學習筆記(6)中文亂碼的解決

          環(huán)境:
          。MySQL 5.0,MySQL的環(huán)境配置為UTF8,建表也全部使用UTF8。
          。IE6.0、FireFox 2.0.2
          。Ruby 1.8.5 + rails 1.2.3

          錯誤現(xiàn)象:
          。用MySQL Query Browser查看MySQL數(shù)據(jù),中文顯示正常。
          。頁面顯示為亂碼,原來是中文的地方都變成了一個長方塊
          。手工調整瀏覽器的頁面編碼,可以使用頁面正常顯示。但刷新后又是亂碼。

          解決方法:修改config/database.yml,加入一句編碼設置如下。

           

          development:
            adapter: mysql
            database: chensite_development
            encoding: utf8
            username: root
            password: 
          123456
            host: localhost

           

          這時從數(shù)據(jù)庫讀取的數(shù)據(jù)顯示正常了,但*.rhtml里的原中文卻顯示變成了亂碼。據(jù)說將*.rhtml用記事本重新保存為utf-8格式可以解決,而我是用Radrails,右擊項目,在它的屬性頁的info項的text file encoding改為UTF-8。這時*.rhtml文件里的中文會變成亂碼,所以最好備份一下,然后將備份的文件內容一個個的復制粘貼過來。致此終于完美解決了中文亂碼問題。


          注:

          1。有些文章說要修改application.rb,在before_filter加入字符過濾代碼。我以前也試過,可行。但我覺得還是修改database.yml來得簡單一些。


          2。有些文章說要同時在*.rhtml里加上如下編碼設置。我發(fā)現(xiàn)這一句可加可不加,對頁面編碼顯示沒有任何影響。
          <meta http-equiv="Content-type" content="text/html; charset=utf-8" />


          3。還有的人說修改environment.rb加入兩行 $KCODE = 'u' 和 require 'jcode' 。這里似乎沒有必要。也許這是老版Rails的解決方法。

           

          4。有的人說在建表的時候不能用InnoDB,但我的建表語句如下,是用InnoDB。沒有發(fā)現(xiàn)問題。

          create table modules (
           id             
          int           not null auto_increment,
           ..........

           expanded       tinyint(
          1)    default 0,
           primary key (id)
          )ENGINE
          =InnoDB DEFAULT CHARSET=utf8;

          posted on 2007-04-19 11:41 陳剛 閱讀(1930) 評論(0)  編輯  收藏 所屬分類: Rails&Ruby

          主站蜘蛛池模板: 彭泽县| 镇宁| 乌兰浩特市| 尖扎县| 勐海县| 惠安县| 富民县| 长丰县| 安徽省| 连江县| 东宁县| 巴彦县| 淮北市| 福建省| 安徽省| 沧源| 噶尔县| 平远县| 布拖县| 无为县| 廊坊市| 象州县| 顺义区| 阳春市| 沈丘县| 吉林市| 青川县| 秦皇岛市| 镇雄县| 鄂托克旗| 永仁县| 东至县| 谷城县| 高陵县| 石城县| 鄢陵县| 益阳市| 合阳县| 昂仁县| 永登县| 江川县|