• ベストアンサー

記号だけの文字化け対応について

PHPのmb_send_mailでメールを飛ばす時に、特殊文字だけがバケで受信してしまいます。 例えば(ここでは入力しても表示出来ないが、まる1で入力すると、まるの中に1が入っている文字) 「あいうえお(1)」を送信すると、受信側で「あいうえお?」と受け取ってしまいます。 mb_language( "ja" ); mb_internal_encoding( "UTF-8" ); は入れてありますけれど。 誰か詳しい方に助けてほしいです。 宜しくお願いします。

  • PHP
  • 回答数2
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • sekibunx
  • ベストアンサー率61% (8/13)
回答No.1

mb_language( "ja" ); ではISO-2022-JPに設定されてしまいますよ. メールのエンコーディングをUTF-8で送りたいなら. mb_language("uni")を指定してください.

参考URL:
http://www.php.net/manual/ja/function.mb-language.php
lxm2010
質問者

お礼

なるほどですね。早速テストしてみました。 解決しました。 どうもありがとうございました!

その他の回答 (1)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

日本語でプレーンテキストのメールを送るときは、ISO-2022-JP(いわゆるJIS)を使います。 ISO-2022-JPには○+数字という文字はありません。 (最新の規格に入っていたらごめんなさい/でも、そうだとしても互換性を考えたら使わない方がよい文字です)

lxm2010
質問者

お礼

教えて頂き、ありがとうございます。 勉強になりました。

関連するQ&A

  • phpからのメール送信が文字化け

    phpでメールを送信できるようなりましたが、メールは無事に送信されるのですが、OutLookで受信すると文字化けしてしまいます。色々調べたんですがどうも解決できません。 phpのtextエディターはUTF-8設定にして記入しました。メールソフト(OutLook)受信のエンコードは色々試したのですが、文字化けしてしまいます。 どのように文字設定をすると文字化けしないのでしょうか。 「テスト」と言う文字を送信すると「eXg」となり表示されます。 よろしくご指導お願いいたします。 <?php $mailto="*******@yahoo.co.jp"; $mailsbj="テスト"; $mailbody="テスト"; $mailheader="From:*******@***.biglobe.ne.jp\nReply-To:*******@yahoo.co.jp\nX-Mailer:PHP/".phpversion(); mb_language("ja"); mb_internal_encoding("UTF-8"); ?>

    • ベストアンサー
    • PHP
  • UTF-8フォームをsend_mailすると文字化け PHP5

    PHP5を使用していますが、 UTF-8で作成したフォームに入力された2バイト文字(日本語)をsend_mailでメールすると、本文が文字化けしてしまいます。 下記URLなども参照したのですが、実際はどのようにしてよいのか分かりません。 URL: http://www.res-system.com/item/478 このURLでは、UTF-8の対処法として「mb_language関数、mb_internal_encoding関数を、 mb_send_mail関数の前に呼び出します。」 ■送信文字がUTF-8の時の呼び出し例 mb_language('Japanese'); mb_internal_encoding("UTF-8"); mb_send_mail('test@test.com', 'タイトル', '本文','From:aaa@aaa.com'); とありますが、これでよいのでしょうか? しかし、下記URLなどには、そもそもmb_send_mailは、使用しないようにと言われています。 URL: http://hain.jp/index.php/tech-j/2007/02/13/%EF%BC%B0%EF%BC%A8%EF%BC%B0%E3%81%AE%E6%96%87%E5%AD%97%E5%8C%96%E3%81%91 私のphp.iniなどの現設定などもここに記載できれば良いのですが、どの部分が文字化けと関連しているのか良く分かりません(教えていただければ、追記します。)。 よろしくお願いします。 キャサリン

    • 締切済み
    • PHP
  • phpのmb_send_mailで携帯のみ文字化け

    PHPのmb_send_mail関数でメールを送信しています。 メールサーバーはGoogleAppsのを使っています PHPのバージョンは5.1.6 --- 下記ソース --- //日本語と内部文字エンコードの指定 mb_language('ja'); mb_internal_encoding('UTF-8'); $parameter = "-f hoge@example.co.jp";//return_path設定 // ↓コレだと携帯では文字化けしないが、Gmailへ送信すると文字化け //$subject = mb_encode_mimeheader(mb_convert_encoding($subject,"JIS","UTF-8")); $header = ""; $header .= "From: {$subject}<{$from}>"; $message = str_replace("\r", "", $message); $res = mb_send_mail($to, $subject, $message, $header, $parameter);

    • ベストアンサー
    • PHP
  • PHP フォームからのデータが文字化け

    PHPにて簡単な以下のようなアプリを勉強がてら作っています。 1.登録フォームを表示 2.確認画面表示 3.DB(MySQL)にデータ登録 そこで質問なのですが、フォームから入力し確認画面を表示するときに、フォームから入力した文字が文字化けしてしまいます(正確には文字化けする時としない時があります)。 出力ページはSmartyを使っています。 テンプレートはUTF-8を使っており、テンプレート内の文字は文字化けしません。PHPソースもUTF-8で書いてあります。 各PHPソースには mb_language("uni"); mb_internal_encoding("UTF-8"); mb_http_output("UTF-8"); と記述しています。 DB(MySQL)のテーブルはUTF-8にしてあります。 1点気になるのは、某ホスティングサービス上で作っているのですが、PHPinfoで見てみるとmb_internal_encodingはEUC-JPになっています。 今回UTF-8で作りたいのですがどうしたら良いのでしょうか? 環境は、 Apache 1.3.34 / PHP 4.3.7 / MySQL 4.1.21 です。 アドバイスお願いいたします。

    • ベストアンサー
    • PHP
  • 携帯 メールフォーム文字化け

    現在携帯のメールフォームを作成しています。 しかし、半角カナで入力した内容が届いたメールでは???と文字化けをしています。 対処の仕方を教えてください。 なお、 if (!mb_check_encoding($var, 'SJIS')) {・・・} ・ ・ ・ ・ mb_language('ja'); mb_internal_encoding('SJIS'); と記述しています。 なにをのせておけばいいのかわからないため、こちらだけにしておきました。 ぜひよろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPメールフォームから機種依存文字を送信すると、文字化けしてしまう

    PHPのメールフォームを作成しましたが、下記2点で悩んでいます。 初心者で申し訳ありませんが、ご教授願いします。 PHP(PHP作成文字コードは「UTF-8」)でメールフォームを作成しました。 --------------------------------------- mb_language("Ja"); mb_internal_encoding("UTF-8"); $header = "From:" .mb_encode_mimeheader($guestName) ."<" .$guestEmail .">"; $mailto = "test@xxx.com"; $subject = "ご連絡ありがとうございます。"; $boRtn=mb_send_mail($mailto,$subject,$content.$content_guest,$header); --------------------------------------- (1)送信した結果、機種依存文字が化けてしまいました。 機種依存以外の文字は文字化けしません。 送信した機種依存文字は「ローマ数字やまるいちなど」 (2)また受信したメールのヘッダー部分を表示したら、 件名の日本語文字列が3行くらいに改行されてしまいます。 上記の現象(特に機種依存文字の送信)について、 記述ミスや足りない点など教えて下さい。 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • メールフォームが部分的に文字化けする

    お問い合わせメールフォームを作りました。 一部のお客様からのメールが部分的に文字化けします。 ========== E月E6日に宿泊させてぁEだきました� そE際E対応でどぁEても納得できなかった為メールしました� ========== メールフォーム自体は UTF-8 でエンコードしていて、メール送信の際に JIS にしています。 ========== <?php mb_language("Japanese"); mb_internal_encoding("utf-8"); [snip] $from_name = mb_convert_encoding($from_name, "JIS", "UTF-8"); $from_name = '=?ISO-2022-JP?B?'.base64_encode($from_name).'?='; $body = mb_convert_encoding($body, "JIS", "UTF-8"); [snip] $mail_true = @mb_send_mail($mailto, $subject, $body, $additional_headers); [snip]

    • ベストアンサー
    • PHP
  • PHP 機種依存文字化け mb_send_mail

    お世話になります。 PHP初心者です。 メール送信時に機種依存文字(﨑髙濵など)の文字化けを解消したいと考えております。 状況を以下に記載します。 ○お問い合せページを作成 1.入力ページ(metaタグの charset=shift_jis) 2.確認ページ(metaタグの charset=shift_jis) 3.終了ページ(metaタグの charset=shift_jis) ○終了ページ(コード抜粋) mb_language("Japanese"); mb_internal_encoding("SJIS"); $ret = mb_send_mail($to1,$subject,$body1,$header); 上記の場合、文字化け(?)になります。 終了ページのキャラセットをUTF-8に変更し、 mb_language("uni"); mb_internal_encoding("UTF-8"); $ret = mb_send_mail($to1,$subject,$body1,$header); とすると、確認ページから渡ってきたセッションの値が文字化けしていて、 その値をmb_convert_encodingでコンバートしても文字化けしてしまいます。 全ページのキャラセットをUTF-8に変更すれば、問題なく受渡しできて、文字化けにならずにメール送信ができますでしょうか。 又、できれば入力ページと確認ページのキャラセット等を変えずに、終了ページのコード変更だけで解決するにはどうすれば宜しいでしょうか。 宜しくお願い申し上げます。

    • 締切済み
    • PHP
  • 一部の文字のみ文字化けします

    phpでXMLを生成しています。 XMLをエディターで見るとほとんどの文字は正常に表示されているのですが、一部の文字だけが文字化けしています。 具体的には 究、岩、ど の三つの文字だけです。 その三つの文字はいずれも同じ文字に文字化けしています。 cを丸で囲ったコピーライトの表記に使われる文字に似ています。 上記の文字のみなにかコピーライトに引っかかっているのでしょうか。 googleで色々と調べてみましたが、他の文字での文字化けの事例はあるのですが、上記の文字での事例は見つかりませんでした。 どなたかご教示願えませんでしょうか。 phpのバージョンはPHP Version 5.3.3です。 phpのあるディレクトリと同じディレクトリにhtaccessで以下の記述を入れています。 php_value mbstring.internal_encoding UTF-8 php_value default_charset UTF-8 php_value mbstring.http_output UTF-8 php_value mbstring.language UTF-8 php_value mbstring.http_input auto php_flag mbstring.encoding_translation On php_value output_handler mb_output_handler

    • ベストアンサー
    • PHP
  • PHPにてメールフォームで文字化け

    今、会社のHP用でメールフォームをphpで作成しています。 「入力」→「確認」→「送信」 でsession関数を使って作成しているのですが確認画面で文字化けしてしまい、送られてくるメールも文字化けしてしまい困っています。 エンコードの間違い?と思って mb_language("ja"); mb_internal_encoding("SJIS"); でやっているのですがこれだけではいけないのでしょうか? 個人で借りているサーバーで試したところうまくいったのですが、会社の借りているサーバーだと文字化けしてしまう状態です。 ちなみに個人で借りているのはロリポップで 会社のサーバーはphp4まで対応しています。 わかりにくい質問ですがよろしくお願いします。

    • 締切済み
    • PHP

専門家に質問してみよう