質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

2477閲覧

PHPMailerで特定の文字が文字化けする件に関して

space_sss

総合スコア81

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2018/12/27 17:04

PHPMailerを使い下記のようにメールを送信しようとしたのですが文字化けしてしまいました。

php

1use PHPMailer\PHPMailer\PHPMailer; 2use PHPMailer\PHPMailer\Exception; 3require "/PHPMailer/src/Exception.php"; 4require "/PHPMailer/src/PHPMailer.php"; 5require "/PHPMailer/src/SMTP.php"; 6$body = '—————————————————————————— 7※本メールは配信専用のアドレスからお送りしております。 8—————————————————————————— 9Copyright © 2018 All Rights Reserved.'; 10mb_language("japanese"); 11mb_internal_encoding("UTF-8"); 12$phpmailer = new PHPMailer(true); 13$phpmailer->isSMTP(); 14$phpmailer->Host = ''; 15$phpmailer->SMTPAuth = true; 16$phpmailer->Username = "from_email"; 17$phpmailer->Password = ""; 18$phpmailer->SMTPSecure = 'tls'; 19$phpmailer->Port = 587; 20$phpmailer->setFrom("from_email", mb_encode_mimeheader("from_name", "UTF-8")); 21$phpmailer->addAddress("to_email"); 22$phpmailer->isHTML(false); 23$phpmailer->Encoding = "7bit"; 24$phpmailer->CharSet = 'ISO-2022-JP'; 25$phpmailer->Subject = mb_encode_mimeheader("sub", "UTF-8"); 26$phpmailer->Body = mb_convert_encoding($body, "JIS", "UTF-8"); 27$phpmailer->send();

結果は下記のメールが送信されました。

?????????????????????????? ※本メールは配信専用のアドレスからお送りしております。 ?????????????????????????? Copyright �$(D"m 2018 All Rights Reserved.

こちらを解決する方法はありますでしょうか?
お手数をかけますがよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

©もJISには存在しないので?になります。

解決方向の方向性としては

  • JISで送れる文字に変更する

例) -等に変更する
© は諦める(存在することで法的な意味を持つマークでは無いので送信者の好みの問題だけのはず)

  • 送る文字コードをutf-8にする
  • HTMLメールにして実体参照を使えるようにする

辺りになります。

投稿2018/12/27 18:27

tanat

総合スコア18709

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/12/28 00:08

©️はコピーライトだから二重になってる方がおかしいはず
otn

2018/12/28 00:29

©️は、法的な意味を持っていたかつてのアメリカでも、(C) と3文字での代用が認められていたはず。
ikadzuchi

2019/01/02 08:12

> —も©もJISには存在しないので 正確には、U+2014「—」は規格上JISの1区29点に対応しますが、広く用いられているMicrosoft社の文字コードではこれはJISに対応付けられず、代わりにU+2015「―」を1区29点に対応付けます。 (質問の環境ではISO-2022-JPの名でISO-2022-JPでないMS流のコードを使うんですかね。あるいはプログラム自体の文字コードの影響や投稿する際に何か入れ替わった可能性も) また、©はJIS X 0212補助漢字に入っておりISO-2022にエンコードできますので、JISに存在しないというのは語弊があります。 だからこそ「?」にはならず、「�$(D"m」と化けています。これは「©」を正しくISO-2022でエンコードしたものです。 が、いかんせんISO-2022でエンコードされたJIS X 0212を扱える環境はあまり無いので、表示側で文字化けしているようです。 EUC-JPでエンコードされたJIS X 0212ならまだそこそこ見られる環境はあるのですが。
otn

2019/01/03 12:06

ISO-2022-JPには存在せず、ISO-2022-JP-1に存在ですね。普通のメールソフトは、ISO-2022-JPしか対応していない気がします。
tanat

2019/01/03 12:19

諸々補足ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問