[PHP-users 8122] Re: 文字コード変換について

D.Yamashita php-users@php.gr.jp
Wed, 19 Jun 2002 11:19:02 +0900


山下と申します。

> mbstring関連文書をみていて疑問に思ったことですが、
> 内部処理用文字コード(普通EUC)、http output用文字コード(普通SJ
I
> S)に 分けて互い変換しながら処理する場合が
> 一般的な方法になっていますね。
>
> 必ずこのようにする必要があるのでしょか?
> 変換の過程が多ければ多いほどover headが大きくなると思うのですが…

私の個人的な見解ですが、Output用にSJISを使うことはともかくとして、
内部処理用にEUCを使うのは、文字列処理やデータベース操作を統一的に
扱うためだと思っています。

UNIX系環境でプログラムを扱う人はやはりかなり多いと思うので、色々な
意味で文字列を処理する場合のEUCの扱いやすさってのがあるんだと思います。
(具体的にすぐには思いつきませんが色々やってると時々出てきます。)
データベースを扱う時も、UNIX系のシステムでSJISを使ってデータベースに
入れてると、コンソールでSQLを扱うときに文字化けしてしまったり、
内部エンコードの設定を誤って、データそのものを壊してしまったり
ということもありえますよね。
っというわけで、私も内部処理用にはEUCを使うようにしています。

> こうすると、system的には問題がなかったんですけど htmlのソースを見る
と
> 文字化けが起きてしまったんです。
> 多分 日本語版Windowsの基本文字コードが JISになっているのが問題だと思い
ま
> すけど…

加藤様もご指摘されていましたが、これはブラウザというか、ソースを
表示させるソフトによります。Windows環境で、IEを使っている場合でも「窓の手」
http://www.asahi-net.or.jp/~vr4m-ikw/
を使ってソースを表示するエディタをEUCも読めるエディタ(秀丸など)に
変更すれば、ちゃんと表示されますよ。私自身もMule for Winを使って、EUCの
ソースでも正常に表示できるように設定しています。

で、肝心のOutputをSJISにする理由ですが、EUCのソースでもちゃんと見ることが
できるのであれば、残った理由は

1.開発環境がWindowsであるため、標準でプログラムを書けばSJISになる
2.モバイル用のコンテンツも同時開発しているため、PC用もSJISに合わせている

くらいではないでしょうか?
後者は開発効率の向上のために重要な事だと思いますが、前者の場合はSJISに
する必要は全くないと思います。実際私も、Windows環境で開発を行ってはいますが
OutputエンコードはEUCにしています。イム様のおっしゃられる通り、オーバーヘッ
ド
が大きくなる可能性のある余計なルーティンが増えてしまいますので。

私なりの結論ですが、Input->EUC、Output->SJISが一般的なように感じるのは、
開発環境がWindowsでシステム環境がUNIX系である場合が多く、その場合だと
そういう文字コードの使い分けが一番自然だからだと思います。
自然だからといってそれを必ず守らなければならないなんてことはなく、
Input->SJIS、Output->SJISと統一したり、逆に私のようにEUCで統一しても、
そのシステムを利用するユーザが不自由しなければ、なんら問題ないのではない
でしょうか?あとは開発者のお好みで。。。

では。

※本文中で「SJIS」と表記したものは全て「Shift-JIS」の事を意味します。。。

国国国国国国国国国国国国国国国国国国国国国国国国
大阪大学大学院 工学部研究科 情報システム工学専攻
                        山 下  大 介
  Mail: yamasan@ise.eng.osaka-u.ac.jp
国国国国国国国国国国国国国国国国国国国国国国国国