くまきち

山と旅と家族が大事。
でも激しい物欲が理性と財布のタガを飛ばす
最近は自転車も乗ってる

CakePHPでファイルをEUCで

2008-06-17 22:24:54 | SEまわり
 CakePHPの各種ファイルをEUCで編集したくて、そのようにすると、ブラウザで文字化けする。

 勝手にcharset=utf-8ってmetaタグに書かれているため。


 ビューにて、

 
$html->charset('EUC-JP');


って書いてあげると、charset=EUC-JPが出力されるんだけど、最初にcharset=utf-8って書かれているため、ブラウザではそっちが優先されるのか、文字化けしたまま。

 こんなHTMLソースになってる。

 
<html>
  <head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  </head>
  <body>
   <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP" />
  </body>
 </html>



ブラウザのエンコーディング設定をEUCに変えると、ちゃんと表示される。



 リファレンスには、cake/libs配下のファイルは原則としていじらないように。って書かれているけど、cake/libs/view/helpers/html.php のcharsetメソッドをいじる。

 
function charset($charset = null, $return = false) {
  if (is_null($charset)) {
    //$charset = 'utf-8';
    $charset = 'EUC-JP';
  }
  return $this->output(sprintf($this->tags['charset'], $charset), $return);
 }



 これでちゃんとEUCで表示されるようになった(HTML上のheadタグ内のcharset定義がEUC-JPに変わった)。 ビューで$html->charset()をコールするのを消してすっきり。