[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 メーリングリストの案内