• ベストアンサー

imodeメールのSubject部分の文字をシフトJISに直して出力したい

imodeメールを 携帯 → メモリーカード → PC へ移すと、 Subjectの部分だけ Subject: =?SHIFT_JIS?B?gXmOT4jkj1qXRovijXOBeoNMg4ODk4N5gVuDkw==?= のように日本語表示されません。 これをPHP(5)で日本語表記に直して出力するには どのようにすればよいのでしょうか。 ご存知の方いらっしゃいましたらご教示願います。 宜しくお願い致します。

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

  • ベストアンサー
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.1

$subject = mb_decode_mimeheader($subject); $subject = mb_convert_encoding($subject, "SJIS"); EUCでMIMEエンコードされています。

Claudia
質問者

お礼

ありがとうございます。 その2行をかましたら期待通りの表示になりました。 デコード(?)してからsjisに変換。 と、一行目の役割が私にはあまりよく解りませんが 本当にありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • シフトJISでのフォーム処理

    シフトJISで書かれたPHPのページから日本語をGETで送り、 同じくシフトJISで書かれたPHPのページで受け取った文字を表示させたいのですが 「%8D%5D%8C%CB%90%EC%8B%E6」のような文字になってしまいます。 シフトJISのまま日本語を渡す方法はありますか? 携帯サイトだからなんとなくシフトJISを使っているのですが、 そもそもUTF8で書いた方が良いのでしょうか?

    • ベストアンサー
    • PHP
  • Shift_jisで表記され、文字化けしてしまうんです。

    VineLinuxに以下のものをインストールしました。 apache_1.3.34(bison-2.1、flex-2.5.4) php-4.4.1 mysql apacheを起動させ、phpの起動を確認(phpinfoで確認)したあと、 とりあえずhtdocsでテストしようと思って、 テスト的にhtmlを作ってブラウザでアクセスしたら、 以下のような現象が発生しました。 ・jisでエンコードすると、日本語表示される。 ・Shift_jis、EUCでエンコードすると文字化け。 ・html上のmetaタグで、charset=Shift_JIS入れてもだめ。 ちょっと行き詰ってます。 何か気になる部分があれば教えてください。 また、解決する上で必要な情報があったらゼヒご指摘ください。 よろしくお願いします。

  • getMsg($msg_id)で、読み取ったメールソースから、本当のSubjectを復元したい、どうすればいいですか?

    メールのソースを見てみると、タイトルのほうが、こんなフォーマットで書かれております。 英語のタイトルは、Subject: Welcome to Flickr! - Read me 日本語のタイトルなら、 Subject: =?iso-2022-jp?B?GyRCJSIlcyUxITwlSCROJCo0aiQkGyhC?= 又は、 Subject: =?shift_jis?B?gZqQVpCii0mDR4OUg0CDk4NRg4qDSYOTksqQTYx2ieYgg1SDfYFbg0yDg4OTg3mBW4OTikqOboFJ?= そのメールのタイトルをPHPプログラミングで扱いたいんですけど、英語の場合は、何も問題なく、日本語を扱う場合は、どうやって、正常に戻せますか? 文字コード変換関数を使って $subject = mb_convert_encoding($subject, "EUC-JP","ISO-2022-JP"); $subject = mb_convert_encoding($subject, "EUC-JP","SJIS"); をいろいろ確かめましたけど、だめでした。 ご存じの方がいっらしゃいましたら、どうぞお教え下さい。 05-06-01 15:42 困り度1:暇なときに回答ください 回答件数:3件 この質問に対する回答は締め切られました

  • 携帯サイト制作をしておりまして、XHTML+Shift_JISで出力で

    携帯サイト制作をしておりまして、XHTML+Shift_JISで出力できずかなり悩まされています。なんでも結構ですのでヒントをいただけましたら幸いです。。 【現象1】 文字化けする。DoCoMoとFireFoxでいずれもUTF-8のコードをShift_JISとして表示しようとしている。 (PHPの記述) header("Content-Type: application/xhtml+xml; charset=Shift_JIS"); mb_internal_encoding('UTF-8'); mb_http_output('Shift_JIS') ob_start('mb_output_handler'); (XHTMLの記述) <!DOCTYPE html PUBLIC "-//i-mode group (ja)//DTD XHTML i-XHTML(Locale/Ver.=ja/1.1) 1.0//EN" "i-xhtml_4ja_10.dtd"> <html xml:lang="ja"> <head> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=shift_jis" /> 【現象2】 PHPでShift_JISで出力できているが、DoCoMoで見るとXHTMLではなくHTMLと解釈されてしまっている。なので<div style="background-color..といったものが無効になっている。 (PHPの記述) mb_internal_encoding('UTF-8'); mb_http_output('Shift_JIS') ob_start('mb_output_handler'); (XHTMLの記述) 現象1と同じ。 【現象3】 DoCoMoとFirefoxいずれも何も出力されなくなる。ソースも表示できない。 (PHPの記述) 現象2と同じ。 (XHTMLの記述) <?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE html PUBLIC "-//i-mode group (ja)//DTD XHTML i-XHTML(Locale/Ver.=ja/1.1) 1.0//EN" "i-xhtml_4ja_10.dtd"> <html xml:lang="ja"> <head> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=shift_jis" /> 【開発条件】 PHP=PHP Version 5.1.6 言語=XHTML サーバー=XSERVER 確認キャリア=DoCoMo N904i phpinfoの内容 output_buffering no value no value output_handler no value no value default_charset no value no value mbstring.detect_order auto auto mbstring.encoding_translation Off Off mbstring.func_overload 0 0 mbstring.http_input auto auto mbstring.http_output SJIS SJIS mbstring.internal_encoding EUC-JP EUC-JP mbstring.language Japanese Japanese mbstring.strict_detection Off Off mbstring.substitute_character no value no value ●謎1 header("Content-Type: application/xhtml+xml; charset=Shift_JIS");をつけると なぜShift_JISに変換してくれなくなるのでしょう? ●謎2 <?xml version="1.0" encoding="Shift_JIS"?> をつけると何も出力されなくなるのはなぜでしょう?

    • ベストアンサー
    • PHP
  • 文字コードの出力を変更したい

    http://www.netmania.jp/で配布されているPHPウェブログシステム2をサーバーで運用しようとしたのですが、ログ出力がShift-JISになっていたので、EUCに変えたいと思って、ソースを見てもさっぱり解りませんでした。 mb_convert_encoding等を検索してみても見つからないし、お手上げです。 どなたかご教授下さいませんか?

    • ベストアンサー
    • PHP
  • EUC文字体系のhtmlから、mailtoでWindowsのメーラーを呼び出してもsubject文字化けさせない方法を教えてください

    EUCコードで書かれたhtmlソースページにて、次のように外部メーラーを呼びだすようにタグを書いた場合、 <A HREF="mailto:test@test.com?cc=admin@net.co.jp?subject=テストです?body=本文です">メールはこちら</A> ブラウザから当該リンクをクリックして、メーラーが起動されたときに、subject/本文ともに文字化けを起こしています。 (ちなみにメーラーはBeckyで試しています) これは、Windows環境がShift-JISのためだと思い、上記のタグの中で、日本語の部分だけ、Shift-JISに変えるようにしてみました。 <A HREF="mailto:test@test.com?cc=admin@net.co.jp?subject=・ニ・ケ・ネ、ヌ、ケ?body=ヒワハク、ヌ、ケ">メールはこちら</A> それでもやはりsubject/本文ともに文字化けします。(最初のものとは違う化け方です) htmlページはeuc文字体系から変えないものとして、上記のような文字化けを回避するhtmlの書き方について教えてください。

    • ベストアンサー
    • HTML
  • FC2は文字コードはShift-JISしか使えな

    FC2は文字コードはShift-JISしか使えないのですか? EUC-JPでもUTF-8でも 日本語部分が��������になってしまいます。 添付画像は、UTF-8の時の例です。

    • ベストアンサー
    • HTML
  • PHP 文字数により絵文字対応メールが届かない

    お世話になります。 携帯サイトにおいて、絵文字メールを3キャリアの携帯に送信するプログラムをPHPにて作成しております。基本は問題なくメールも送受信できております。 ただ、本文の文字数が多い場合に、メールが届かない、あるいは削除される、といった現象がキャリア毎に起こっております。 PHPプログラム内では、以下のような形式でメール文章を作成し、送信しております。 ------------------------ <docomo> To: ***@docomo.ne.jp From: aaaa@****.jp Subject: =?shift_jis?B?gs2CuYLXglE=?= Reply-To: aaaa@****.jp Bounce-To: bounces@****.jp Bounces-To: bounces@****.jp MIME-Version: 1.0 Content-Type: text/plain; charset=Shift-JIS Content-Transfer-Encoding: base64 jGeR0Y5Sk2OCs4LxCgoxMZP6g・・・・・・(日本語で全角360文字程度) <au> To: ***@ezweb.ne.jp From: aaaa@****.jp Subject: =?ISO-2022-JP?B?gs2CuYLXglI=?= Reply-To: aaaa@****.jp Bounce-To: bounces@****.jp Bounces-To: bounces@****.jp MIME-Version: 1.0 Content-Type: text/plain; charset=Shift-JIS Content-Transfer-Encoding: base64 g0GDRYKzgvEKCoxnkdGOUpN・・・・・・(日本語で全角360文字程度) <softbank> To: ***@softbank.ne.jp From: aaaa@****.jp Subject: =?shift_jis?B?gs2CuYLXglI=?= Reply-To: aaaa@****.jp Bounce-To: bounces@****.jp Bounces-To: bounces@****.jp MIME-Version: 1.0 Content-Type: text/plain; charset=Shift-JIS Content-Transfer-Encoding: base64 gs6C8YKtgrOC8QoKjGeR0Y5S・・・・・・(日本語で全角360文字程度) ------------------------ 全てのメールの内容は同じなのですが、softbankは文章が完全な状態で届きます。auは文章の後半が削除されて届きます。docomoに至ってはメールすら届きません。 作成されたメールの文字列を変換して参照してみましたが、本文が破綻しているようなことはありませんでした。また、例えばdocomoであれば、送受信文字数の制限は5000文字だと思いますし、文字数には余裕があります。なのに何故メールが届かないのかが全く分からず、困っております。 ちなみに、base64での変換後の文字数も1000近くで、問題になるような文字数ではないと思われます。 Linuxを利用しており、メールにはqmailを使用しております。 qmailをコマンドラインで同じ文章等を送信しても、やはり同様の現象が起きるようです。 よろしければ、助言をお願いできませんでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPをつかったメール送信時の文字化け

    OS :FreeBSD4.8 PHP4.3.2 Apache2 を使用してるものです。 PHPでメール送信のフォームを作成して実際に送ってみるとサブジェクトがどうしても文字化けします。 $subject = i18n_mime_header_encode(i18n_convert($subject, "JIS")); mail($too, $subject, $memo, $ff.$from); 上記のように変換コード関数をいれると Fatal error: Call to undefined function: i18n_mime_header_encode() in /usr/home/mmiyagi/htdocs/send.php のようにエラーがでます。 php.ini設定不足でしょうか?

    • ベストアンサー
    • PHP
  • shift_jisファイルコピーの文字化け

    RedHat4にあるShift_JISファイル(例:index.html)を別のサーバー(CentOS5)へscpしてWEBアクセスする と文字化けしてしまいます。 nkfコマンドで調べるとファイル自体はShift_JISですが、中身の日本語が文字化けしてしまいます。 tar.gzで圧縮して転送しても変わりません。 解消する方法はありますでしょうか。 ご存知の方、宜しくお願いします。