スレッド表示 | フラット表示〕 全トピック 920 件中 387 番目 次≫ ≪前

機種依存文字のメール送信

created: 2005-07-05 20:59 | modified: 2005-08-20 00:45 | reply: 2

[2352] 機種依存文字のメール送信

user: ライオン | created: 2005-07-05 20:59
メール送信時の文字化けで悩んでいます。

// 半角カナを全角へ
$note=i18n_ja_jp_hantozen($note,"K"); $rcd = mb_send_mail($to, $title, $note, $from, $mta);
上記処理の場合で、「川?」と入力された内容をメールで送信すると、「川?」と文字化けされてしまいます。

原因は「?」という漢字が機種依存文字にあたるためだと思いますが、回避方法がみつかりません。

アドバイスお願いいたします。
reply: 2357 返信 編集 削除

[2357] Re. 機種依存文字のメール送信

user: ゆうじ | created: 2005-07-10 18:02
お返事遅くなりました。

mb_send_mail 内部では、mbstring.internal_encoding から
ISO-2022-JP(JIS) へエンコドがおこなわれていますので
その際『?』の文字コードが失われたのでしょうね。

mb_convert_encoding関数でエンコーディングによる
『?』の変化を確認したところ次のようになりました。

○:文字コード維持
×:文字コード消失

○ EUC-JP → JIS
○ EUC-JP → SJIS
× SJIS → JIS
× SJIS → EUC-JP
× SJIS → UTF-8

SJIS からの変換では文字コードが維持されませんでした。

メールでは外字は使えないのがRFCのお約束ですが、
スクリプトの文字コードを EUC-JP で書いて
mbstring.internal_encoding = 'EUC-JP' とし、
この他入出力時の文字コード変換もおこなわない設定にしておけば
その送信先に限ってうまくいくかも知れません。
Parent: 2352  reply: 2484 返信 編集 削除

[2484] 返信が遅くなり申し訳ありません。

user: ライオン | created: 2005-08-20 00:45
> メールでは外字は使えないのがRFCのお約束ですが、
はい。ただ入力される方は一般のお客さんなので、プログラム的に対応しないといけません。

いろいろ試してみまして、現状は以下としました。
$note=mb_ereg_replace("?","崎",$note);

ゆうじさん>
アドバイスありがとうございました。
Parent: 2357  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 387 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑