[PHP-users 14078] Re: includeするファイルを文字コード変換

UNO Shintaro php-users@php.gr.jp
Wed, 19 Mar 2003 03:28:08 +0900


>問題はincludeで読み込んだテンプレートファイルがShift_JISで
>内部コードEUCとしているのとあわないためか、
>c?c?c? ??? と はてなが多い目の文字化けして表示されます。

>各ケースでそれぞれの端末にあったテンプレートファイルを読み込みます。
>テンプレートに指定してるindex.html 等は htmlが記述されたファイルに
><?php ... ?> でコードを埋め込んでいて、実質cgiファイルです。
>
>nkf でパイプしながらincludeしたりできないかなと思うのですが、そのやり方がわかりません。
>fopen で開いて文字コードを変更するのはできそうですが、それをcgiファイルとして実行する
>やり方がわかりません。
>
>テンプレートに指定してるファイルはHTMLコーティング担当者やデザイナーが作成したままの状態
>Shift_JISのままにしておきたいです。
>
><?php ... ?>のブロックにはあらかじめ作成した関数の呼び出しだけを行う感じです。
>
>解決方法をご教授ください。
>よろしくお願いします。


ちょっと強引ですけど・・・
「指定されたファイルをEUCに変換出力する」というhttpアプリケーションを
作って、そのアプリケーション経由でテンプレートファイルをincludeすれば、
ご要望を満たせるかと思います。
このhttpアプリケーション自体はPHPでも作れそうです。(速度はどうかな?)

使い方の例:
  include 'http://www.example.com/sjis2euc.php?file=/home/i/index.html';


この例を単純に満たせるだけのhttpアプリケーションを作った場合、
サーバー内の全てのファイルが誰にでも読める、などというおそろしい状況が
起きかねないので、くれぐれも注意してください。

-- 
UNO Shintaro, 宇野 信太郎
mailto:uno@venus.dti.ne.jp
http://www.venus.dti.ne.jp/~uno/