携帯でも絵文字が表示されない問題の解決方法とは?

このQ&Aのポイント
  • 携帯で3キャリア対応の絵文字を表示するための方法について解説します。
  • ドコモでは絵文字の表示に問題はありませんが、auやソフトバンクでは表示がうまくいかないことがあります。
  • 問題の原因と解決方法について調査し、3キャリア対応の携帯サイトを作るためのヒントをご紹介します。
回答を見る
  • ベストアンサー

携帯で3キャリア対応の絵文字を表示する方法

http://www.dspt.net/tools/emoji/ ↑の絵文字自動変換スプリクトを使って携帯サイトを作っています。 サイトの解説どおりにやって、ドコモでは問題なく絵文字が表示されました。 しかし、auでは一部の絵文字が「?」と表示されてしまいます。 そしてソフトバンクでは 「お客様の端末からはご利用になれません。(WJ46042E)」 というエラーメッセージが出てしまいます。 phpなどは初めてで原因が全くわかりません。 ネット「WJ46042E」のエラーについて調べてもあまり情報がありません。 何とか1ソースで3キャリア対応の携帯サイトを作りたいのですが、ヒントだけでも教えていただけれたらうれしいです。 もしくは、もっと簡単な変換スプリクトなどがありましたら教えていただければと思います。 よろしくお願いいたします。

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

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

  • ベストアンサー
  • umioyo
  • ベストアンサー率66% (35/53)
回答No.3

携帯は、世代やキャリアで表示のさせ方が異なるので、まずどこまで古い機種をサポートするかを考え、それに応じたスクリプトを書く必要があります。 自分のライブラリなど用意すると後々使えて楽ですよ。 function career($num){ $agent = $_SERVER['HTTP_USER_AGENT']; if(substr_count($agent, "DoCoMo")){ if($num=="search"){ print "&#xE6DC;"; }else if(substr_count($agent, "Vodafone") or substr_count($agent, "SoftBank")){ if($num=="search"){ print "&#xE114;"; }else if(substr_count($agent, "UP.Browser") or substr_count($agent, "KDDI")){ if($num=="search"){ print "<img localsrc=\"119\">"; } } のような感じで作ってます。 外部ファイルの読み込みという意味では、1ファイルで処理はできませんが、埋め込めば1ファイルで実現可能かと^^; もっといいライブラリが提供されているかもしれません。

その他の回答 (2)

  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.2

サーバーレベルでいじらなければいけないって言う前提でよければ、以下のようなものもあります。 http://labs.yumemi.co.jp/labs/mod/man_contents.html

noname#111181
noname#111181
回答No.1

3キャリアを扱うというのは、一朝一夕にはいきません。 参考書籍として「PHP×携帯サイトデベロッパーズバイブル」(荒木稔/ソフトバンククリエイティブ/2008年10月/2,940円)をお勧めします。

関連するQ&A

  • 携帯3キャリア対応絵文字のPHPが上手く作動しません。

    初めまして。 携帯サイトに3キャリア対応の絵文字を使いたく、http://www.dspt.net/tools/emoji/このサイトのPHPを使用しましたが 絵文字を挿入した部分に[an error occurred while processing this directive]というエラーが表示され、正常に絵文字が反映されません。 サーバーはPHP4.0、SSIに対応しているサーバーです(CORESERVER)。 プログラム設置は以下の通りにしました。 public_html / ●●.com / index.html | +-- php(←このphpフォルダはpublic_htmlの下の階層でいいのでしょうか?) | +-- emoji / trans.php emojih.csv emojix.csv | +-- images / .htaccessはindex.htmlと同じ場所に入れ、 AddType application/xhtml+xml .htm .html AddHandler server-parsed html と記載しています。 絵文字記載タグの相対パスは"/php/emoji/trans.php?emoji=絵文字番号" としています(デフォルトのまま)。 Mobile Site Coding&Designという本でも調べたのですが、こちらも同じPHPを使用(説明文もほぼ同じでした)しているのですが なぜか相対パスは"/php/emoji/trans.php?emoji=絵文字番号"となっていました。 また、AddHandler server-parsed htmlの記述の.htaccessもPHPフォルダの中に入れるとありました。 色々なパターンを試しましたがどれも上手くいかず、結局どれが正しいのか分からなくなってしまいました。 お詳しい方がいましたらご教授いただけましたら幸いです。よろしくお願い致します。

    • ベストアンサー
    • PHP
  • 絵文字変換スクリプトに使用方法について

    現在、携帯サイトを作成中です。 1ソースで3キャリア対応のサイトを目指しているのですが、 絵文字の互換性のなさにつまずいております。 そこで、絵文字変換スクリプトを使い、絵文字を3キャリアで表示 可能にしようと思ったのですが、使用方法が分かりません。 絵文字変換スクリプトを使用する際、やったことは (1)<http://www.dspt.net/tools/emoji/>を参考にしています。 (2)<http://fs-server.net/index.html>⇒こちらのサーバーを使用しています。 (3)絵文字変換スクリプトをDL (4)画像以外はアスキーモードでサーバーにUL (5)サーバーのTOPディレクトリに「.htaccess」ファイルを作成。 記述内容は、1行目(AddHandler server-parsed html ) 2行目(AddType application/xhtml+xml .html )です。 ローカルでテキスト編集し、サーバー上で「.htaccess」ファイル に変換しました。 (6)絵文字を表示させたいhtmlファイルに<!--#include virtual="/php/emoji/trans.php?emoji=1"-->と記述。 以上のことをした時、絵文字が表示されませんでした。 代わりに、「an error occurred while processing this directive」 と表示されました。 私的にphpの仕組みがよく分かっておらず、原因は.htaccessファイルの 置き方が悪いのかと思っています。 お分かりになる方がいらっしゃったら、絵文字が表記されない原因を 教えて頂ければと思います。 何卒よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 携帯サイト絵文字入りのPHPフォーム

    いつもお世話になっています。 携帯サイト制作をしており、こちら→http://www.dspt.net/tools/emoji/で配布されている絵文字変換スプリクトを利用させていただいています。 さらにこちら→http://magical-form.com/ で配布されているPHPフォームも使用させていただいています。 PHPフォームはhtmlのテンプレートを読み込ませるものなので、フォームのURLはform.phpとなり、そこにアクセスするとテンプレートtemp.htmlが表示されます。 そこでtemp.htmlに絵文字スクリプトのSSIを入れたのですが、form.phpにアクセスしても表示されません。 しかしtemp.htmlにアクセスすると絵文字が表示されているのです。 form.phpにも何か手を加えなければいけないのでしょうか? phpもSSIも初めてで配布先のマニュアルに従っているだけの状態です。 どうかお知恵をお貸し下さい。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 携帯サイトを作っています。

    携帯サイトを作っています。 http://www.dspt.net/tools/emoji/ 上記のサイトにある3キャリア対応の絵文字変換スプリクトを使っており、実際に絵文字の表示葉問題なくできます。 しかし、絵文字を表示すると、 w3c mobileOK checker <http://validator.w3.org/mobile/> において、携帯サイトとして認識される度合いが60%以上も下がってしまいます。 色々原因をさぐってみたところ、上記したスプリクトを作動させるために、 .htaccessファイルに AddHandler server-parsed html と記述してアップロードしているのですが、これが原因だということがわかりました。 この記述をしない、または他の記述で代替する、ssiをphpに書き換えるなどの方法は無いでしょうか? phpなど全くの無知で、絵文字の表示も上記サイトのマニュアルどおりに設置してようやく出来たという状況です。 何卒よいお知恵をいただきますようよろしくお願いします。

    • ベストアンサー
    • PHP
  • 携帯絵文字変換スクリプトで20個目以降がエラーに

    ただいま1つのソースで3キャリアに対応した携帯サイトを作成しております。 絵文字を表示させるために、HTMLタグボードさんで配布されている「携帯絵文字変換スクリプト 3キャリア対応」 http://www.dspt.net/tools/emoji/ (フリーソフト/改変・改造自由)を組み込んでみたのですが、 下のようなエラーになってしまいました。 絵文字が19個目までは正常に表示されて、20個目以降がエラーになってしまいます。 (テストの為にHTMLファイルの<BODY></BODY>内に同じ絵文字だけを20個以上並べたところ、絵文字の種類にかかわらず20個目から[an error occurred while processing this directive]となってしまいます。) HTMLファイルをPCから開いても携帯から開いても上記と同じ現象が起こるので、もしかしたら携帯絵文字変換スクリプトの中に表示数の上限に関係した記述があるのではと思ったのですが、php初心者のためスクリプトを見ても原因がわかりませんでした。 もし原因の分かる方がいらっしゃったら、ぜひ教えていただければと思います。 どうぞよろしくお願いいたします。 ■絵文字変換スクリプト本体 trans.php <?php //┌───────────────────────────────── //│ [ EMOJI TRANS Ver2.3] //│ trans.php - 2008/06/15 //│ Copyright (C) DSPT.NET //│ webmaster@dspt.net //│ http://www.dspt.net/ //└───────────────────────────────── /********************** 初期設定 ***********************/ //絵文字変換表 $emoji_data = "emojix.csv"; //入力値取得 $num = $_GET["emoji"]; //PC用絵文字格納フォルダ $img_dir = "/php/emoji/images/"; //ドコモ→au絵文字自動変換利用(on:1 off:0) $ie = "1"; /********************** 以下からは改変しないほうが無難 ***********************/ //変換表を配列に格納 $emoji_array = array(); $emoji_array[] = ""; $contents = @file($emoji_data); foreach($contents as $line){ $line = rtrim( $line ); $emoji_array[] = explode(",", $line); } function encode($data) { $data = mb_convert_encoding($data, "SJIS", "auto"); return $data; } //携帯UA取得 $agent = $_SERVER["HTTP_USER_AGENT"]; //携帯端末のユーザエージェントを判定 function mobile($data){ if(preg_match("/^DoCoMo\/[12]\.0/i", $data)) { return "i";// i-mode } elseif(preg_match("/^(J\-PHONE|Vodafone|MOT\-[CV]980|SoftBank)\//i", $data)) { return "s";// softbank } elseif(preg_match("/^KDDI\-/i", $data) || preg_match("/UP\.Browser/i", $data)) { return "e";// ezweb } elseif(preg_match("/^PDXGW/i", $data) || preg_match("/(DDIPOCKET|WILLCOM);/i", $data)) { return "w";// willcom } elseif(preg_match("/^L\-mode/i", $data)) { return "l";// l-mode } else { return "p";// pc } } //携帯キャリアに合わせて絵文字を出力 function emoji($data) { global $agent,$emoji_array,$img_dir,$ie; if(preg_match("/[0-9]{1,3}/", $data) && is_numeric($data) && 0 < $data && $data < 253) { switch(mobile($agent)){ case "i"; $put = $emoji_array[$data][1]; break; case "e"; if (preg_match("/[^0-9]/", $emoji_array[$data][2])) { $put = $emoji_array[$data][2]; } elseif ($ie > 0) { $put = $emoji_array[$data][1]; // Display such the icons that ezserver transformed as docomo i-emoji. } else { $put = "<img localsrc=\"".$emoji_array[$data][2]."\" />"; } break; case "s"; if (preg_match("/^[A-Z]{1}?/", $emoji_array[$data][3])) { $put = "\x1B\$".encode($emoji_array[$data][3])."\x0F"; } else { $put = encode($emoji_array[$data][3]); } break; case "p"; $put = "<img src=\"".$img_dir.$emoji_array[$data][0].".gif\" width=\"12\" height=\"12\" border=\"0\" alt=\"\" />"; break; } echo $put; } else { echo "[Error!]\n"; } } //処理 emoji($num); ?>

    • ベストアンサー
    • PHP
  • 携帯サイトでの絵文字対応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
  • 3キャリア対応の絵文字

    3キャリア対応のサイトを作っているのですが、AUの絵文字がドコモからだと見えないと言われました。 絵文字を3キャリア対応にするにはどうしたらいいのですか?

    • 締切済み
    • PHP
  • 絵文字のフォーム入力について

    携帯サイトで掲示板を作っているのですが、入力された絵文字を他のキャリアで表示させるにはどうすればよいのでしょうか? 例えば、ドコモの携帯で掲示板に絵文字を入れて文章が投稿されたとします。 その文章をauやソフトバンクなどの機種で見た時に、キャリアごとの絵文字に振り替えて表示させるにはどうすればいいでしょうか? mixiで使われている技術なのですが、考えつく方法は キャリア判別→入力された文章の解析→変数に入れる→キャリア別の絵文字に変換する という方法なのですが、解析→変数の段階がとてもややこしい気がするのです。 他に簡単な方法がありますか? あればご教授ください。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • AUからの絵文字をソフトバンクでそのまま表示させる方法はありますか?

    私はソフトバンク(3G)の携帯を使っており、知人はAUを使っています。 知人から絵文字が送られると、通常はソフトバンクの絵文字に変換されます。 これを、変換させずに、AUの絵文字のまま表示させる方法はないでしょうか。 AUの絵文字をダウンロードしてマイ絵文字に入れても意味はないでしょうか。 ソフトバンクの絵文字が可愛くないのでなんとかしたいのですが・・・。

  • 携帯電話の絵文字対応の掲示板の作製で困っています。

    携帯電話の絵文字対応の掲示板の作製で困っています。 絵文字対応の掲示板を探しましたがSoftBank 3G未対応だったりして良いと思うものが見つかりませんでした。 そこで自分で作ろうとしたのですが、絵文字の取り扱いに困っています。 (1)各キャリアから入力された絵文字をdocomoの場合[i:1]、 SoftBankの場合[s:1]、auの場合[e:1]等、絵文字に対応しているコードへ変換後DBへ登録 (2)docomoからアクセスした場合[i:1]は元の絵文字を表示、[s:1][e:1]は対応している画像を表示 上記の様な事をしたいのです。 (2)の絵文字復元は出来たのですが、(1)の入力→変換が上手く出来ません。 分かる方教えてください。

    • ベストアンサー
    • PHP

専門家に質問してみよう