• 締切済み

携帯からの絵文字をWebで再現するには?

HTML_Emojiでいい感じになるかと思ったんですが、フォームからの入力ではなく、携帯端末から受け取った絵文字メールをサーバーで解析してWeb画面に出力したいです。 受け取ったメール本文を ISO-2022-JP から UTF-8 に変換してDBに格納してSELECTして、HTML_Emoji咬ませて画面出力したいのですが、DB格納時点で「?」に文字化けしています。 何かしら回避策はあるのでしょうか? 無理なら「無理」と答えが欲しいです。

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

みんなの回答

  • mpx
  • ベストアンサー率71% (149/209)
回答No.2

"ISO-2022-JP から UTF-8 に変換して" ←ここに無理があります 変換前に絵文字を一時的に別の文字列に変換して、 DBから読み込んだ時に復元させる処理を入れてみてはいかがでしょう。

1bitBrain
質問者

お礼

変換対象の絵文字に一致するコードは、各キャリアの公式ページなりを参照すれば引っ掛けられると思いますが・・・ 同じような事を考えている人、欲している開発者は沢山いそうなので、汎用的なサンプルコードがありそうで見つかりません。(クレクレ的ですいません。) 絵文字メール → Web画面での絵文字表示を実現しているWebサービスはありますでしょうか? ※ でも、imodeの場合は、送信サーバー側でPC向けには、一律、〓(ゲタ)に変換しているようなので無理なのですよね?。

  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.1

直接的な回答ではありませんが、imodeメールの場合、絵文字に対応している端末以外にメールを送信するとき絵文字はすべて「〓」に変換される仕様だったはずです。 これについては、メール受信後にどうこうできるものではありません。

1bitBrain
質問者

お礼

UmJammerさんの回答としては、imodeメール(docomo)は、「無理」との事ですね。 ありがとうございます。

関連するQ&A

  • 携帯サイトでの絵文字対応BBSの作成で絵文字の変換に困っています。

    PHPとMySQLを使って絵文字対応の携帯サイト用BBSを構築しています。データベースに登録した絵文字付のコメントを取得すると、絵文字部分がうまく表示されずに困っています。 現在、携帯サイト用の絵文字対応BBSを作成しています。フォームから絵文字付のコメントを入力して、それをDBに登録、または登録されている絵文字付コメントをDBから取得するというものです。 DBに登録する際に入力した絵文字を「<emoji=1,,,>」のような形に変換してeucJP-winでDBに登録します。 出力する際には「<emoji=1,,>」を対応する絵文字に変換(事前に変換表を作成しました。)して画面に出力します。 その際、直接ソースに記述した<emoji=1,,>は対応する絵文字に変換されて表示されるのですが、DBから取得した絵文字付コメント(例:こんにちは<emoji=1,,>)は対応する絵文字に変換されない状態になっており困っています。 ob_start();                     :                     : <?php $mysql=new MySQL; $sql="SELECT no,title,imp FROM s001osirase ORDER BY no DESC LIMIT 0,3"; $mysql->query($sql); while($row=$mysql->fetch()){ $no=$row['no']; $title=$row['title']; $title=mb_convert_encoding($title,'SJIS-win',mb_internal_encoding()); $imp=$row['imp']; if($imp=="yimp"){ echo '<div style="color:#FF0000;font-size:xx-small;">[重要</div>'; echo '<div style="font-size:xx-small;"><a href="/mobile/s001/bbs/bbs_show.php?no='.$no.'">'.$title.'</a></div>'; }else{ echo '<div style="color:#FF0000;font-size:xx-small;">[普通]</div>'; echo '<div style="font-size:xx-small;"><a href="/mobile/s001/bbs/bbs_show.php?no='.$no.'">'.$title.'</a></div>'; } } ?>                 : //内部文字コード(eucJP-win)をSJIS-winに変換する関数 outpue_encode(); //<emoji=1,,,>部分を絵文字に変換してバッファを出力する関数 emoji_output(); emoji_output関数は以下のとおりです。 function emoji_output(){ $output_str=ob_get_contents(); ob_end_clean(); header('Content-Type: application/xhtml+xml;'); $output_str=preg_replace_callback('/<emoji=([0-9,]+)>/','emoji_output_changea',$output_str); echo $output_str; } コールバック関数emoji_output_changeaで$output_str内の<emoji=1,,,>を絵文字に変換しています。 ob_start()を使ってバッファにためて、emoji_outputで<emoji=1,,>を一括でpreg_replace_call関数を使って絵文字に変換して出力しています。この関数は問題なく動いていると思います。 DBから取得した記事が格納された変数$titleのみ変換されていないように思います。 考えられる原因がお分かりの方、いらっしゃいましたらよろしくお願いします。 わかりづらい文章で申し訳ありません。

    • ベストアンサー
    • PHP
  • Unicode時の文字化け(過去にもありましたが・・・)

    過去の投稿も確認したんですが、理解できなかったので申し訳ありませんが、よろしくお願いします。 Perl5.8.2を使用しています。 Perlでメールを読んでDBに格納→DBから一覧画面に表示という処理を Unicodeで作成しています。 Unicodeの変換はUnicode::Japaneseを使用していますが、 Outlookからテキストのメールを送った場合には、なんの問題も無く、 ブラウザで表示できるのですが、UTF-8で送った場合に半角との混在 文字(例えば『試験html』など)を送ると文字化けを起こします。 過去の投稿からUTF8フラグ(?)の影響かと思い、UTF8フラグをチェック してみたのですが双方とも付いていないようでした。 UTF-8以外のHTMLメールの場合には問題なく表示できます。 どのような原因が考えられるのでしょうか? よろしくお願いいたします。

  • AppleMail 文字化けについて

    MacOSX 10.4.11を使っています。 AppleMailで送信していて、文字化けをするという事をよく言われたので文字化けをしない様にエンコーディングをISO-2022-jpに変更しました。 変更は様々なサイトで提供されているやり方 1.デフォルトのエンコーディングを“UTF-8”エンコーディングから“ISO-2022-JP”エンコーディングに設定   方法:      1.「ターミナル」(/アプリケーション/ユーティリティ/)を開きます。      2. プロンプトの後に次のコマンドを入力します。       defaults write com.apple.mail NSPreferredMailCharset "ISO-2022-JP"      3. コマンドの入力後、「Return」キーを押します。      4.「ターミナル」を終了します。 を参考にしました。 ですが、どうしてか文字化けが治りません。 Thunderbird3で確認してみたところ、タイトルは普通に見えるのですが、本文が文字化けをしています。 エンコーディングはSHIFT-JISになっているのですが、再度Shift-JISを選択すると、今度は本文が見える様になってタイトルが文字化けをします。 思うにタイトルと本文のエンコーディングが違うのかと思いいろいろエンコーディングを変えたら、タイトルはISO-2022-jpで本文がShiftJISで送られている様に思います。 何か解決方法があれば教えて頂きたいと思います。 よろしくお願いします。

    • ベストアンサー
    • Mac
  • utf-8でメールを送信すると件名が文字化け

    Perlでメールフォームを作成しております。 今後のこともあってUTF-8でファイル、HTMLの出力をおこなっております。 なにかとutf-8便利でさくさくと問題なく作成していたのですがメール送信の肝心な部分で問題が出てきました。 送信先はiモードで506iです。 メールのヘッダーを以下のようにして送ると件名の日本語がどうしても文字化けします。本文はしません。アウトルックエクスプレス6.0では文字化けしません。YahooWebメールは文字化けしました。 Reply-To: $adminmail Errors-To: $adminmail To: $user_mail From: $adminmail Subject: $subject content-transfer-encoding: 7bit Content-type: text/plain; charset=utf-8 ・携帯がutf-8に対応していないメーラーなんだろうと思いますがなぜ本文は文字化けしないんでしょうか。 ・件名を文字化けをしないようにする方法はありますでしょうか?(ファイルの保存形式はutf-8を変えずに)

    • ベストアンサー
    • CGI
  • Perl 文字コードについて

    From: $from To: $mailto CC: $mailcc Subject: $subject Mime-Version: 1.0 Content-type: text/plain;charset=\"UTF-8\" Content-Transfer-Encoding: 8bit この時点で、UTF-8を指定しました。 use Encode; use Encode::Guess; Encode::Guess->set_suspects( qw/ euc-jp shiftjis 7bit-jis / ); $name = encode('UTF-8', decode('Guess', $name)); で本文を、UTF-8に変換して送るようなコードを書きました。 これで一応、パソコン、スマホ共に「本文」は文字化けせず送れるのですが、 今度、別の問題が発生してしまったようで、 「件名」が文字化けしてしまうようになりました。 $subject = encode('UTF-8', decode('cp932', $subject)); 件名も、本文と同じように変換コードをしてみたところ、パソコンでは文字化けしませんでしたが「件名」で文字化けしてしまいます。 調べたところ本文と件名では、内容が違い MIMEエンコードを使用するとのことだったのですが、 実際どのように使うのかわからないです。 $subject = encode('ISO-2022-JP', decode('cp932', $subject)); encode('MIME-Header-ISO_2022_JP', $subject) このように記述するとスマホでは文字化けしないのですが パソコンで文字化けしてしまいます。 そこで、件名がパソコンとスマホで文字化けしないようにし、本文はUTF-8で送るようにするにはどのようにすればいいのでしょうか?

    • ベストアンサー
    • Perl
  • 文字列変換について

    質問させてください。 携帯のサイトで各種(Vodafone, au)携帯電話からBBSに感想を入力する画面を作成しました。 入力される文字列は文字、数字、絵文字があります。 入力されたデータはPostgreSQLのDBに格納しています。 その格納された文字列(絵文字含む)を各種携帯で 表示してみたところ、お互いの絵文字が問題に なったため、変換処理を追加しました。 ======================================== $msg = "********";(DBから取得した文字列(絵文字含む)) $emoji = file(emoji_file.txt); for($r=0;$r<count($emoji);$r++){ $string = chop($emoji[$r]); $emoji_data = split("===", $string); if(strstr($msg, $emoji_data[0])){ echo("HIT"); $msg = eregi_replace($emoji_data[0], $emoji_data[1], $msg); } } echo($msg); ====================================== emoji_file.txt $Fr===1 $G-===281 $G.===287 ====================================== 上記のプログラムで、 DBから取得した文字列内にemoji_file.txt にある絵文字データがあれば数値に変換したいと 考えていますが、"HIT"が表示されるにも かかわらず変換されずに表示されます。 これは、"$G."などVodafoneの絵文字が 普通の文字列と違うからでしょうか? 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • mysql utf8、php・euc-jp で出力すると、[~]が文字化けする

    タイトルの通りです。 mysqlの文字コードはutf8なのですが、phpはeucで出力しています。 DBに格納されている文字は文字化けせずに、きちんと表示されているのですが、出力すると「~」が「?」に化けて表示されてしまいます。 mysql_query(”SETNAMES ujis″); や mb_language("Japanese"); mb_internal_encoding("EUC-JP"); mb_http_input("auto"); mb_http_output("EUC-JP"); 等も記述しておりますが、どうしても化けてしまいます。 回避方法等ご存知の方がおられましたら、ご教授お願いいたします。

    • ベストアンサー
    • PHP
  • メールの文字化けについて

    現在ACCESS2000(WIN98)で BASP21を利用してメールを受信して メールの内容を解析してデータベース化しているのですが、 メール本文が部分的に文字化けしてしまうことがあります。 BASP21に漢字コードを変換する命令があったのですが どのコードもうまく変換されませんでした。 ちなみにそのメール本文を新しいメールに貼り付けて 自分宛に送信して解析したら文字化けが起こりませんでした。 このように部分的に文字化けする原因はどのようなことが考えられるのですか。 またこの文字化けを直す方法を教えてください。 宜しくお願いしますm(_ _)m

  • oracleの文字コードとlinuxサーバの文字コードが異なる場合、サ

    oracleの文字コードとlinuxサーバの文字コードが異なる場合、サーバからシェルまたはsqlplusでDBに接続し、spoolコマンドで指定したファイルに、SQLの実行結果や、PLSQLのDNMS_OUTPUTで出力した内容を保存すると文字化けしてしまいます。 これを回避するにはどうすればよいのか、ご教授下さい。 具体的な環境は、下記の通りです。 oracles:SJIS(NLS-LANGはSJIS系にしています) サーバUTF8 出来ればUTF8でファイルに出力したいのですが、無理なら最低でもSJISで出力させたいです。現在は、ftpでバイナリーダウンロードさせて秀丸などのエディターで見ても、どちらとも認識できない文字コードになっているようです。 なお、お客様側のサーバなので、DBやOSの文字コードを変えることはできません。

  • perlのメールフォームが文字化け

    perlのメールフォームが文字化けして困っています。 メールフォームの出力HTMLは、shift_jis それを、ISO-2022-JPに直して、送信しています。 また、jode.pl、mimew.plを使用しています。 何が原因で文字化けしているのか、教えていただけないでしょうか? よろしくお願いします。

    • ベストアンサー
    • Perl

専門家に質問してみよう