タグ別アーカイブ: 文字化け

PHP 4 mb_send_mail無しで日本語メールを文字化けしないで送信


mb_send_mailを使用せずに、mail()関数で日本語のタイトル、本文を含むメール送信に

ついて、依頼があったので、その時のまとめ

懐かしいですね。もう十年前ぐらいの事でしょうか?PHP3からPHP4になるあたりでは

mbstringの日本語ライブラリが存在してなかった?

よくmail()関数を使っておまじない的なコード変換を入れて送信していました。

理由は不明・・・

そして


(PHP 4 >= 4.0.6, PHP 5)

mb_send_mail — エンコード変換を行ってメールを送信する


$body = ‘日本語本文’;
$from = ‘test@local.test’;


mb_language(‘Japanese’);

$subject = mb_convert_encoding(‘日本語タイトル’, ‘jis’, ‘utf8’);
$subject = base64_encode($subject);
$subject = ‘=?iso-2022-jp?b?’. $subject .’?=’;

$body = mb_convert_encoding($body, ‘jis’, ‘utf8’);

mail(‘test@local.test’, $subject, $body, ‘From:’. $from, ‘-f’. $from);


まあ雑だけど、作ってくれた社内の大吉君

mb_send_mailではなく、mail関数でメールが送信できる。

文字化けも発生しません。



よく見ると結局 mb_ マルチバイト関数使ってるやんけ!

postfixadminで日本語の名前が文字化けする不具合を解消する


PHP、MySQLの文字コードをUTF-8で利用していると

入力した日本語の名前だけが文字化けを起こします。MySQLのデータベース内を確認しても正しく日本語で登録されていることから

入力、登録時点では文字化けが発生していない!登録している情報を表示するところで

文字化けが発生しているのだと推測。

そこで、出力しているHTMLのテンプレートを確認してみると

list-virtual.php

print ” ” . htmlentities($tMailbox[$i][‘name’]) . “\n”;

の箇所でおや?

UTF-8で利用する際?文字コードをパラメーターにしなければいけないとありましたので

print ” ” . htmlentities($tMailbox[$i][‘name’], ENT_QUOTES, “UTF-8”) . “\n”;

に修正します。

以上で無事に文字化けが完了しました。

その他のhtmlentitiesでは、文字コードが設定されているので、この部分だけ見落としているミスだと思います。

ブラウザー毎のcsvダウンロードでファイル名が文字化け回避対応


各種幅広いブラウザーから、ファイル(画像、動画、csvなど)をダウンロードするプログラムを

作る際に気をつけなければいけない事は

ファイルのサイズ設定

ファイル名の設定の2点でしょうか?

ファイルサイズを、設定していないとMACのサファリ?でファイルサイズが-1になってしまう不具合が発生してしまいます。

後、ファイル名で日本語を使用する際は

IEでは、Shift_JISにエンコード、その他のブラウザーではUTF-8が

文字化けされずに、正しく日本語名が表示できます。

その他には、ヘッダーのファイル名設定個所で

ファイル名をダブル、またはシングルクォーテーションで囲むと

ファイル名の間にスペースがあっても、スペースで区切られたファイル名では無く

全てのファイル名が正しく設定されます。

ここら辺、ブラウザーのエージェント情報で分儀すればいいのですが

中にこだわりの人がブラウザーを偽造している場合、回避する方法はあるのだろうか。

これはまさにエンジニアの永遠のテーマかもしれない。