こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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タグの文字コードはどうしたらよいのでしょうか?

よろしくお願いいたします。

投稿日時 - 2005-09-28 00:55:04

QNo.1677901

すぐに回答ほしいです

質問者が選んだベストアンサー

> 回答のように、全てSHIFT_JISで作成しても問題なのなら、その方が楽チンです。
> この場合は改行コードはどうされるんですか?
>
> それとも、すべてEUCのほうが楽なのでしょうか?

sjisで問題ないと思いますよ。windowsは基本がsjis
なので、ファイルのコピーやなんやらやっている内に
混ざったり、コードが変わってしまったりという心配
もないですからね。改行コードもCR+LFでやってます。
これもftpソフトでサーバとの間で転送する際には
文字コードと一緒に自動変換できます。
windows版apacheは動かしてないので、ちょっと
わかりません。

> また、現在利用しているレンタルサーバーはロリポップ(Apache)と
> 1_man.net(コバルトOS)です。1_man.netはリナックスと書いて
> ありました。ロリポップはwindowsかリナックスかわかりません。
> 現時点、練習でPHPをアップしてるのはロリポップのみです。

ロリポップもunix系でしょう。linuxかは判りませんが。サポートのところで見たら、色んなプログラムへのパスの説明が /usr/....というようになってましたから。

投稿日時 - 2005-09-28 19:00:19

補足

回答ありがとうございます。もう少し教えてください。

早速php.iniをSJISに変更してみました。

その上で、SJISの更新履歴のPHPファイルをFFFTPを使って、ロリポップへUPしてみました。
【SJISファイル】→ロリポップ
★FFFTPでは無変換→txtから読み込んだ履歴が表示されますが、表やソという文字の後ろに\が入ってしまいます。
★FFFTPでEUCに変換→同上
【SJISファイル】→1_man.net
★FFFTPでは無変換→txtから読み込んだ履歴が文字化け
★FFFTPでEUCに変換→同上
のようになってしまいます。

1_man.netできちんと表示させるにはどうしたらいいのでしょうか?

投稿日時 - 2005-09-28 20:59:12

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

1-man.netのphp環境はどうなっているでしょう。
phpinfoで見えると思います。

また、
>PHPファイルをEUCで作成し、
>テキストファイルをShift-JISで作成した
という事ですが、これは phpでテキストファイルを
読み込んで表示する仕組みという事ですか。

投稿日時 - 2005-09-29 08:09:49

ANo.2

html自体の仕様は、エディタで作ろうが、プログラムで作ろうが
変わるわけではありません。metaタグでの文字コード指定が
なくても通常はブラウザが中身を見て判断してくれますが
必ずしも正しく判断してくれない時がありますので、明示的
に指定しておくのが良いという訳です。

サーバもwindowsなのでしょうか。でしたら、#1さんのように
文字コードを指定すれば良いと思います。
よくあるのは自分の環境はwindowsで、レンタルサーバはlinuxと
いうケースです。この場合、自分のPCで作るときはSJISで
サーバに転送するときはftpソフトの機能で自動的にEUC
に変換させます。

投稿日時 - 2005-09-28 08:18:56

補足

回答ありがとうございます。

windowsなので通常はSHIFT_JISです。ただ参考書にEUCでと書かれていたのでエディタはEUC保存とLF改行の設定をしてみました

回答のように、全てSHIFT_JISで作成しても問題なのなら、その方が楽チンです。この場合は改行コードはどうされるんですか?

それとも、すべてEUCのほうが楽なのでしょうか?

また、現在利用しているレンタルサーバーはロリポップ(Apache)と1_man.net(コバルトOS)です。1_man.netはリナックスと書いてありました。ロリポップはwindowsかリナックスかわかりません。
現時点、練習でPHPをアップしてるのはロリポップのみです。

投稿日時 - 2005-09-28 16:12:38

ANo.1

通常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にしましょう。

投稿日時 - 2005-09-28 02:35:40

補足

回答ありがとうございます。

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

投稿日時 - 2005-09-28 16:09:46

あなたにオススメの質問