搜尋

首頁  >  問答  >  主體

Symfony2中文支援怎麼樣呀?

本來是想用ZendFramework2的,可是ZF2對中文的支援太差了,很多時候中文都會出現亂碼,想了解一下Symfony2會不會經常的中文亂碼呢?

黄舟黄舟2794 天前454

全部回覆(1)我來回復

  • 阿神

    阿神2017-05-16 16:48:19

    Symfony 2的中文支援很好,實際上也沒有什麼特殊之處,如果能遵循最佳實踐,不會出現任何問題。

    首先是PHP的charset,SF2預設採用的就是UTF-8:

    • 2.0分支的預設設定(/app/config/config.yml)是UTF-8。
    • 2.1分支索性去掉了這個配置項,如果不打算採用UTF-8,需要在AppKernel裡重載getCharset()方法來指定。

    接著是各類資料來源的字元集,如關聯式資料庫,NoSQL,外部資料檔等:

    • 如果用Doctrine或Propel等第三方函式庫,都有對應的參數,Doctrine預設是UTF-8。
    • 如果自己做資料介面封裝,拿MySQL來舉例,建表需要確認資料庫字元集為UTF-8,建立連線時也需要指定字元集;外部檔案如csv等,需要自己做轉換後進行操作;較新的NoSQL一般都預設用UTF-8,所以不用操心。

    視圖層:

    • 如果你把語言項目全部寫在模板裡,需要確保模板檔案的編碼(也可以視為外部資料檔案)是正確的。
    • 如果輸出HTML或其他標記語言內容,也需要確保在語意上也指定了正確的字元集(如HTML的charset)。
    • 如果用SF2自備的Translations模組(可以用yaml,xml或gettext),需要指定正確的locale。

    總結地說,就是要確保所有的程式碼檔案和運作參數都是相同的編碼(UTF-8)。

    至於確保程式碼檔案都是正確的字元集,用VCS的hook可以很好的處理,例如在提交檔案時檢查檔案的字元集(pre-commit),如果不正確,則拒絕提交。

    回覆
    0
  • 取消回覆