2007-02-14
惜しいが間違っている
惜しいけど間違っている点がいくつか.
●default_charsetはデフォルトの文字コードのことではない。
非常に誤解しやすい内容。
default_charsetというパラメータはご存じの人も多いと思う。
それに大抵の初心者本にはこれを設定するように書いてあるが、
むしろ逆である。
default_charsetとは
のこと。
default_mimetype = 'text/html'で
default_charset = 'utf-8'の場合
header('Content-Type: text/html; charset:utf-8');
PHPの文字化けを本気で解決する - ぎじゅっやさん
default_charsetは関係ない.もし未指定なら単に
Content-Type: text/html
が出力されます.
これだとコンテンツの文字エンコードの指定を推測しなくてはいけなくなるのでmetaで書いてるかもしれないけど
「適切に指定すべき」でしょう.もしくはHTMLの場合は自前で自前で
header('Content-Type: text/html; charset=<CHARSET>');
をしっかり書き切ること.
●internal_encodingは内部エンコードのことではない
先ほどの例の時にも書いたが、
ではmbstring.internal_encodingとは何なのか。
これは
なだけである。
mb_convert_kanaなどのパラメータで、
変換元文字コードの指定がなかった時にだけ利用されるものだ。
これが必ず利用されるのはmb_encode_mimeheaderぐらいだ。
PHPの文字化けを本気で解決する - ぎじゅっやさん
かなり嘘.
mbstring.internal_encodingはほとんどのmbstring拡張モジュール関数群で使用されます.
面倒なので例えばで書くと,mb_strlen()など最後に「[, string encoding] )」がある関数で,最後の引数(encoding)を省略した場合です.
後はmb_send_mail()に渡す文字列の文字エンコーディングの暗黙的指定にもなります.
残念.
- http://php.net/mb_strlen:title=PHP: mb_strlen - Manual?
●mb_send_mailは使うな
mb_send_mailを使っている人も多いかもしれない。
だが、このmb_send_mailは文字化けの元凶だ。
mb_send_mailは何の文字コードを何の文字コードに変換するかを指定することが出来ない。
ブラックボックスを通った後に何の文字コードで出力されるか全くわからないのである。
PHPの文字化けを本気で解決する - ぎじゅっやさん
そこそこ嘘.
mb_send_mailに渡す各文字列は上記に書いたとおりmbstring.internal_encodingの文字エンコードが前提です.
各変換先はmbstring内部で持つ言語とメールで使用する文字エンコードデータベースの対応表によって明示的に処理されます.
PHPバージョン4.4.3,バージョン5.1.3からmb_get_info()という関数が拡張されて,この情報を取得することができるようになったので,
少なくとも最新バージョンでは変換情報について「暗黙ではありません」.知らないだけです.
まぁどっちにしろmb_send_mail()は分かりづらいので使わないでいいなら使わないに越したことはないでしょう.
個人的には超極める! PHPで書いたライブラリが意外とそこそこ動くので(意外とかよ)
徐々に常用していってます.ちょっとエラーとか警告とか出まくって汚いので修正して(公開して)いかないといけないんですが.
- 335 http://d.hatena.ne.jp/odz/20070215/1171555360
- 230 http://blog.inasphere.net/2007/04/phpini.html
- 89 http://reader.livedoor.com/reader/
- 72 http://labs.unoh.net/2007/02/get.html
- 63 http://blog.livedoor.jp/kotaro_wizard/archives/51541455.html
- 32 http://b.hatena.ne.jp/entry/http://phpspot.org/blog/archives/2007/02/php2038.html
- 27 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rls=GGLJ,GGLJ:2006-28,GGLJ:ja&q=php+int+上限
- 26 http://b.hatena.ne.jp/entry/http://hain.jp/index.php/tech-j/2007/02/13/PHPの文字化け
- 25 http://search.yahoo.co.jp/search?p=default_charset&search.x=1&fr=top_beta&tid=top_beta&ei=UTF-8
- 19 http://b.hatena.ne.jp/entry/http://labs.unoh.net/2007/02/get.html




































