[PHP-users 27935] Re: PHP-users まとめ読み, 34 巻, 17 号
Tadashi Jokagi
ml @ elf.no-ip.org
2005年 12月 26日 (月) 14:38:08 JST
ぢょ〜@よくきたなです.
安井さんの「[PHP-users 27915] Re: PHP-users まとめ読み, 34 巻, 17 号」から
>"iso-2022-jp"ではなく、"ISO-2022-JP"なのではないでしょうか?
># これって、大文字小文字関係あるのかなぁ...
関係ないです.
> 6, 1149行目の「;mbstring.language = Japanese」を
> 「mbstring.language = Japanese」に変更しました。
(snip)
>index.phpをEUC-JPで保存後、ブラウザでアクセスしました。
>1と表示され、メールはちゃんと送信され、メールのタイトルおよび本文
>両方とも文字化けなどは見られませんでした。
mbstring.language = Japanese の場合,mbstring.internal_encoding
がデフォルトでは EUC-JP だから文字化けしないのだと思います.
>同じように、index.phpをSJISで保存後、ブラウザでアクセスしました。
>1と表示され、メールはちゃんと送信され、タイトルだけ文字化けしました。
mbstring.internal_encoding を SJIS などにしていないから文字化けす
るんだと思います.
<?php
// charset=Shift_JIS
mb_language( "Japanese");
mb_internal_encoding( "Shift_JIS");
mb_send_mail( "foo @ example.com", "日本語", "本文");
?>
で日本語のメールが送信できています.
>同じように、index.phpをISO-2022-JISで保存後、ブラウザでアクセスしました。
>SJISと同様に、タイトルだけ文字化けしました。
PHP は基本的にスクリプトを ISO-2022-JP で書くことはできないと思い
ます.
#最近--zend-multibyte を付けてないのでつけた場合は不明ですが
$ cat iso2022jp.php
<?php
// charset=ISO-2022-JP
$string = "日本語";
?>
$ php -Cq iso2022jp.php
PHP Warning: Unexpected character in input: 'SCII=27) state=2 in /tmp/iso2022jp.php on line 3
PHP Warning: Unexpected character in input: 'SCII=27) state=2 in /tmp/iso2022jp.php on line 3
PHP Notice: Undefined variable: BF in /tmp/iso2022jp.php on line 3
$ strings iso2022jp.php
<?php
$string = "
$BF|K\8l
(B";
「日」の前後に「$BF」が含まれるため,変数参照が行われ,結果文字列
が壊れることになります.
--
----.----1----.----2----.----3----.----4----.----5----.----6----.----7
Tadashi Jokagi/Shibuya city mailto:elf @ elf.no-ip.org
YokukitanaII http://elf.no-ip.org/
Yokukita blog http://blog.poyo.jp/
Yokukita wiki http://wiki.poyo.jp/
PHP-users メーリングリストの案内