- ベストアンサー
PHPの文字コード
PHP初心者です。 環境【WinXP、PHP5、Apache2、エディタはDreamWeaverかPHPエディタ】 あまり詳しくないので、まず文字コードが今ひとつわかりません。 参考書などでPHPはEUCで記述と書いてあるので、エディタの設定で文字コードをEUC,改行コードをLFに設定しています。 ホームページを作成していた時には、metaタグに文字コードを打っていますが、プログラムの場合必要ないんですか?普段はShift-JISで入力しています。それともmetaタグの文字コードをEUCにしなければいけないのでしょうか? 現在、初めて更新履歴を作成しています。PHPファイルをEUCで作成し、テキストファイルをShift-JISで作成したのですが、うまく表示できませんでした。色々試して、PHPもテキストもShift-JISで作成したら、一応表示されたものの、たまに¥マークが勝手に入ってしまいます。 通常Windows環境でPHPファイルを作成する時の文字コードを教えてください。また、この場合はサイト全体(htmlファイルなど)のmetaタグの文字コードはどうしたらよいのでしょうか? よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
> 回答のように、全てSHIFT_JISで作成しても問題なのなら、その方が楽チンです。 > この場合は改行コードはどうされるんですか? > > それとも、すべてEUCのほうが楽なのでしょうか? sjisで問題ないと思いますよ。windowsは基本がsjis なので、ファイルのコピーやなんやらやっている内に 混ざったり、コードが変わってしまったりという心配 もないですからね。改行コードもCR+LFでやってます。 これもftpソフトでサーバとの間で転送する際には 文字コードと一緒に自動変換できます。 windows版apacheは動かしてないので、ちょっと わかりません。 > また、現在利用しているレンタルサーバーはロリポップ(Apache)と > 1_man.net(コバルトOS)です。1_man.netはリナックスと書いて > ありました。ロリポップはwindowsかリナックスかわかりません。 > 現時点、練習でPHPをアップしてるのはロリポップのみです。 ロリポップもunix系でしょう。linuxかは判りませんが。サポートのところで見たら、色んなプログラムへのパスの説明が /usr/....というようになってましたから。
その他の回答 (3)
- fire--
- ベストアンサー率49% (146/293)
1-man.netのphp環境はどうなっているでしょう。 phpinfoで見えると思います。 また、 >PHPファイルをEUCで作成し、 >テキストファイルをShift-JISで作成した という事ですが、これは phpでテキストファイルを 読み込んで表示する仕組みという事ですか。
- fire--
- ベストアンサー率49% (146/293)
html自体の仕様は、エディタで作ろうが、プログラムで作ろうが 変わるわけではありません。metaタグでの文字コード指定が なくても通常はブラウザが中身を見て判断してくれますが 必ずしも正しく判断してくれない時がありますので、明示的 に指定しておくのが良いという訳です。 サーバもwindowsなのでしょうか。でしたら、#1さんのように 文字コードを指定すれば良いと思います。 よくあるのは自分の環境はwindowsで、レンタルサーバはlinuxと いうケースです。この場合、自分のPCで作るときはSJISで サーバに転送するときはftpソフトの機能で自動的にEUC に変換させます。
補足
回答ありがとうございます。 windowsなので通常はSHIFT_JISです。ただ参考書にEUCでと書かれていたのでエディタはEUC保存とLF改行の設定をしてみました 回答のように、全てSHIFT_JISで作成しても問題なのなら、その方が楽チンです。この場合は改行コードはどうされるんですか? それとも、すべてEUCのほうが楽なのでしょうか? また、現在利用しているレンタルサーバーはロリポップ(Apache)と1_man.net(コバルトOS)です。1_man.netはリナックスと書いてありました。ロリポップはwindowsかリナックスかわかりません。 現時点、練習でPHPをアップしてるのはロリポップのみです。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
通常Windows環境でPHPファイルを作成する時の文字コードを教えてください。 多分、普通にインストールするとSHIFT_JISになると思います。 php.iniの [mbstring]セクションで mbstring.language = Japanese … mbstring.internal_encoding = SJIS となっていたら、 日本語文字列の内部コードはシフトJISです。 であれば、シフトJISでPHPを作成しましょう。 ;mbstring.http_output = SJIS で出力するコードが指定できますが(上記はコメントになっているので無効、デフォルトは内部コードだから、シフトJIS) その場合、 metaタグの文字コードは、SHIFT_JISにしましょう。
補足
回答ありがとうございます。 windowsなので通常はSHIFT_JISです。ただ参考書にEUCでと書かれていたのでエディタはEUC保存とLF改行の設定をしてみました。。(全部SHIFT_JISで構わないなら、その方が楽ですが。。。) また、現在利用しているレンタルサーバーはロリポップ(Apache)と1_man.net(コバルトOS)です。1_man.netはリナックスと書いてありました。ロリポップはwindowsかリナックスかわかりません。 php.iniの設定は【今日から使えるPHP5サンプル集(秀和システム)】にのっとて下記のように設定してあります。 [mbstring] ; language for internal character representation. mbstring.language = Japanese ; internal/script encoding. ; Some encoding cannot work as internal encoding. ; (e.g. SJIS, BIG5, ISO-2022-*) mbstring.internal_encoding = EUC-JP ; http input encoding. mbstring.http_input = auto ; http output encoding. mb_output_handler must be ; registered as output buffer to function mbstring.http_output = EUC-JP ; enable automatic encoding translation accoding to ; mbstring.internal_encoding setting. Input chars are ; converted to internal encoding by setting this to On. ; Note: Do _not_ use automatic encoding translation for ; portable libs/applications. mbstring.encoding_translation = Off ; automatic encoding detection order. ; auto means mbstring.detect_order = auto ; substitute_character used when character cannot be converted ; one from another mbstring.substitute_character = auto mbstring.script_encoding=EUC-JP ;mbstring.func_overload = 0
補足
回答ありがとうございます。もう少し教えてください。 早速php.iniをSJISに変更してみました。 その上で、SJISの更新履歴のPHPファイルをFFFTPを使って、ロリポップへUPしてみました。 【SJISファイル】→ロリポップ ★FFFTPでは無変換→txtから読み込んだ履歴が表示されますが、表やソという文字の後ろに\が入ってしまいます。 ★FFFTPでEUCに変換→同上 【SJISファイル】→1_man.net ★FFFTPでは無変換→txtから読み込んだ履歴が文字化け ★FFFTPでEUCに変換→同上 のようになってしまいます。 1_man.netできちんと表示させるにはどうしたらいいのでしょうか?