[PHP-users 6307] Re: mb_convert_encoding() での JIS->EUC-JP変換
HAYAKAWA Hiroshi
php-users@php.gr.jp
Tue, 19 Mar 2002 12:10:17 +0900
早川@名古屋です。
自己レスです。
その後の検証結果をご報告します。
まだ問題は解決できていませんけども。
on 02.3.18 10:18 PM, HAYAKAWA Hiroshi at hayakawa@sam.hi-ho.ne.jp wrote:
> しかし今度は全文は表示されるものの、
> 円マーク(\)が?マーク(?)になって表示されるという状況になりました。
> php.iniのマルチバイト関連の設定は以下の通りです。
>
> mbstring.internal_encoding = EUC-JP
> ;mbstring.http_input = auto
> ;mbstring.http_output = SJIS
> mbstring.detect_order = auto
> ;mbstring.substitute_character = none;
googleで「円マーク」で検索するなどしてみて、
以下のような本文のメールを処理させてみました。
This is testmail.
!"#$%&'()*+,-./
0123456789:;<=>?
@ABCDEFGHIJKLMNO
PQRSTUVWXYZ[\]^_
`abcdefghijklmno
pqrstuvwxyz{|}~
これはテストメールです。
!"#$%&'()*+,-./
0123456789:;<=>?
@ABCDEFGHIJKLMNO
PQRSTUVWXYZ[\]^_
`abcdefghijklmno
pqrstuvwxyz{|}~
テストメールの最後の行です。
すると、12行目の円マーク(バックスラッシュ)と、
14行目のチルダ(にょろ)が?マークとして表示されました。
$rawmail=mb_convert_encoding($rawmail, "EUC-JP", "auto");
とした場合のほか、
$rawmail=mb_convert_encoding($rawmail, "UTF-8", "auto");
$rawmail=mb_convert_encoding($rawmail, "EUC-JP", "UTF-8");
とした場合に再現します。
試しに、
$rawmail=mb_convert_encoding($rawmail, "SJIS", "auto");
$rawmail=mb_convert_encoding($rawmail, "EUC-JP", "SJIS");
としてみたところ、当該部分の\は¥、~は ̄と表示されました。
(autoの検出順はASCII,JIS,UTF-8,EUC-JP,SJIS)
また、rawmailの文字コード変換では影響されないメールのサブジェクトを
「これは\マークと~のテスト」
として試してもやはり同様に?マークに変わってしまいます。
(MIMEデコードにはmb_decode_mimeheader()を使用)
PHP4.1.2のマルチバイトの変換がらみじゃないかとは思うのですが、
環境設定のどこかに問題があるのか、
あるいはこれは仕様として仕方のないことなのか、
見当もつかずにいます。
何かお気づきの方がいらっしゃいましたら
ご指摘いただけますと幸いです。
-----
>>> With your dreaming, ☆彡 Hayakawa,Hiroshi <<<
>>> with your smile. ☆彡 hayakawa@sam.hi-ho.ne.jp <<<
>>> ☆彡 Nagoya,Aichi,JAPAN <<<