EUC-JPとutf-8を使いたいです。
HPを作成する時に、別のページに文字コードをそれぞれ割り当てます
<meta http-equiv="content-type" content="text/html; charset=○○○"/>
○○○を
01.php はEUC
02.php はutf-8
にします。
(1)同一サーバーで2つの文字コードを使うことは可能でしょうか?
※現在はリナックスサーバーCENTOS5を作りました。
PHPをサーバーに入れています。
PHPの設定がEUC仕様にしているようで、utf-8だと文字化けします。
これを各ページのcharsetに合わせて文字コードを決定するような仕様に変更することはシステム上可能でしょうか?
可能でしたら、PHP.iniの設定変更方法をおしえてください
詳しい方お願いします。
可能です。以下のスクリプトを改良して試してみて下さい。
PHPファイル自体をUTF-8で記述し、出力エンコードをOUTPUT_ENCでコントロールしています。
UTF-8以外で出力する場合は該当の行のコメントアウトを外してUTF-8の行をコメント化すればOKです。
※蛇足ですがなるべく文字コードは統一した方が無難です。
Dummy
<?php /* PHPファイル自体のエンコード */ define(INTERNAL_ENC ,"UTF-8"); /* 出力時のエンコード */ define(OUTPUT_ENC ,"UTF-8"); //define(OUTPUT_ENC ,"EUC-JP"); //define(OUTPUT_ENC ,"Shift_JIS"); mb_http_output(OUTPUT_ENC); ob_start("mb_output_handler"); mb_internal_encoding(INTERNAL_ENC); mb_http_output(OUTPUT_ENC); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=<?=OUTPUT_ENC?>"> <title>さんぷる</title> </head> <body> あいうえお<br> かきくけこ<br> </body> </html>
>(1)同一サーバーで2つの文字コードを使うことは可能でしょうか?
可能です。世の中には1つのサーバ上で様々なユーザが異なる文字コードでPHPの出力をしています。
文字化けする原因はおそらくソースファイルの文字エンコードにあると思います。
EUC-JPで出力したい方、この場合は01.phpはEUC-JPで保存し、UTF-8で出力したい02.phpはUTF-8で保存するようにしてみてください。
別問題としてこちらも参考になるかと思います。
> これを各ページのcharsetに合わせて文字コードを決定するような仕様に変更することはシステム上可能でしょうか?
最初の回答者さんのようにすれば、ページに記述する文字コードとPHPの内部エンコードや出力エンコードを統一する事は(プログラム的に変更することは)可能ですが、システム的にファイルに合わせてという事はできないと思います。
ただ、文字化けの責任はPHPだけではないかも知れません。
Apacheの返すhttpヘッダとPHPから出力しようとしているものとが不一致の場合、文字化けする可能性がありそうです。
(ブラウザによって、httpヘッダで決めるもの、メタタグで決めるもの、実際の文字データを見て決めるもの...といろいろあるようです。)
PHPからhttpヘッダを出力する事は可能です。UTF-8にするなら、
header('Content-Type: text/html; charset="UTF-8"');
という感じで。
http://jp.php.net/manual/ja/function.header.php
また、勝手に換えられるのは好きではないので、普段はmb_http_output('pass')としています。
コメント(0件)