- 締切済み
EUC →Shift_jisへのコンバート
Postgres+PHPでサイトを運営しております 文字セットをすべてEUC-JPで統一していたのですが そこにモバイル用のページを追加することになりました サーバ環境を変えずにやるために モバイル用のページだけ EUCで吐き出すページを一括してshift_jisにコンバートするような 方法はないものかと思っております または やはりPHPやPOSTGRESの環境ごと変えてしまうべきなのでしょうか
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- uki629
- ベストアンサー率23% (40/172)
もうできているシステムだとだめだと思うけど 自分が普段やっているやり方は Smartyを使ってですけど display()でいきなり出力するのではなくて fetch()でいったん変数に入れてmb_convert_encodinでエンコード かけてから出力しています。 それにfetch()で呼び出すテンプレートを携帯とPCで振り分けてするだけで 同じシステムで両ページに簡単に対応させられますし
- wp_
- ベストアンサー率54% (132/242)
当方もhtaccessに一票です。apacheであればですが。 比較的楽に移行できます。 >または やはりPHPやPOSTGRESの環境ごと変えてしまうべきなのでしょうか 実稼動中のシステムそのものを変更するのはかなり危険(復旧が困難)な場合があるので 新規案件だけ切り出し、そこの設定・ロジックのみ特殊処理として扱うようにした方が安全です。 この場合はhtaccessが適切かな、と思うわけです。 既存サイトと共通のDBを使い、表示したりするのであればその部分のconvertは必要ですが。 >絵文字を操作するならUTF-8の方が楽かも・・? そんなことはないですよ。 絵文字は所詮ただの外字なので、I/Oで崩れないよう処置を施す手間は どの文字コードでも変わらないです。 むしろmobileサイトの場合はsjisで統一した方がdebugの工数は減るのではないかな、と思いますよ。
- mookun2007
- ベストアンサー率59% (28/47)
htaccessを使用できるようでしたら、 以下の設定でソースはEUCのままで、出力をSJISにすることができます。 詳しい解説はご自分で調べてみてください。 .htaccess php_flag output_buffering On php_value output_handler mb_output_handler php_value default_charset Shift_JIS php_value extension php_mbstring.dll php_value mbstring.language Japanese php_value mbstring.internal_encoding EUC-JP php_value mbstring.http_input auto php_value mbstring.http_output SJIS php_flag mbstring.encoding_translation On php_value mbstring.detect_order auto php_value mbstring.substitute_character none
- tany180sx
- ベストアンサー率63% (239/379)
output_handler = mb_output_handler や ob_start('callback_func') で 出力時の文字コードを変換可能です。 XHTMLで出力するなら ob_start() を使ったほうがいいです。 絵文字を操作するならUTF-8の方が楽かも・・?