[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        <<<