[PHP-users 20196]Re: 文字コードの扱い(ERROR:Invalid EUC_JP)

kenbooit @ excite.co.jp kenbooit @ excite.co.jp
2004年 2月 2日 (月) 19:55:14 JST


島田です。
いわきりさん、レスありがとうございました。

仰る通りマニュアルの読み込みが甘い点お詫びします。

>ここまで判っているのならやりようは、いくらでもありませんか。
>mb_detect_encoding()で処理対象の文字コードを判別し、
>自スクリプト内での文字コードにmb_convert_encoding()を使って
>変換すれば、おしまい。

はい、仰るとおりで、このようにすればうまくいくと思うのですが、
皆さんがフォームから来る変数全てに関数をかます、なんてことをしているわけではないですよね。
(勿論これはあくまで一例として挙げて頂いただけだとは思うのですが。)

>>■phpinfo()
>>Directive 			Local Value 	Master Value 
>>----------------------------------------------------------------
>>mbstring.detect_order 		no 		value no value 
>>mbstring.encoding_translation 	On 		On 
>>mbstring.func_overload 		0 		0 
>>mbstring.http_input 			pass 		pass

>外部から与えられるデータは何もせず取り込まれる設定です。

>>■php.ini
>>[mbstring]
>>mbstring.language 		= Japanese
>>;mbstring.internal_encoding 	= EUC-JP
>>mbstring.encoding_translation = On

>変換すべき対象が指定されていないので変換は無意味。

はい。
多分。何も意味が分かっていない頃に

mbstring.encoding_translation = On

のコメントを外したようです。
何故当時の自分が外したのか今となっては分からないです。

http://www.php.net/manual/ja/ref.mbstring.php
に書いてある通り無意味ですね。失礼しました。

で、今回の質問をもう一度整理しますと、
関数で全変数を処理するのは面倒ということで
php.iniファイルで設定すれば?という話になるのですが

(1)
[mbstring]
mbstring.language 		= Japanese
mbstring.internal_encoding 	= EUC-JP ;;;;
HTTP入力文字エンコーディング検出及び内部文字エンコーディングへの変換
mbstring.http_input 		= auto
;mbstring.http_output 		= EUC-JP ;;;; Apacheで設定するので不要
mbstring.encoding_translation 	= On
mbstring.detect_order 		= auto
;mbstring.substitute_character 	= none;
;mbstring.func_overload 	= 0

自分なりにマニュアルを読んだ結果、
上記のようにしようと考えているのですが、
「高」の口じゃなくて繋がっているバージョンはEUC-JPにはない文字。
=エラーになる?

というような発想に至った次第です(これは思いっきり的外れな疑問でしょうか)。
自分で試したいところなのですが、自分のWindowsマシンからは、
これを入力することができない状況です。

根本的に勘違いしている可能性が多々あるのかもしれないのですが、
ご教授頂ければと思います。
よろしくお願い致します。

#いつもスレッドがずれてしまってすみません。


PHP-users メーリングリストの案内