絵文字変換スクリプトの使用方法と絵文字が表示されない原因について

このQ&Aのポイント
  • 携帯サイトの絵文字互換性につまずいている場合、絵文字変換スクリプトを使用することで解決できます。
  • 絵文字変換スクリプトを使用する際には、以下の手順に従って設定を行ってください。
  • 絵文字が表示されない場合、.htaccessファイルの配置場所や設定内容を確認してください。
回答を見る
  • ベストアンサー

絵文字変換スクリプトに使用方法について

現在、携帯サイトを作成中です。 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
  • 回答数2
  • ありがとう数6

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

  • ベストアンサー
回答No.2

trans.phpにアクセスしてエラーが出るならtrans.phpを実行できなからですね。 そのエラーを修正すればSSIでも表示されるようになると思いますが、 何が原因かまではわかりません。 フリーCGIが動かない理由は、ほとんどの場合、パスの指定の仕方が悪いか、改変するときに失敗した、アップロードの仕方が悪い、環境依存で動かないなどが原因だと思います。

bbmagnet
質問者

お礼

教えていただきありがとうございました! 問題は解決していませんが、アドバイスを基に今後も調べてみます。

その他の回答 (1)

回答No.1

/php/emoji/trans.php このディレクトリにtrans.phpを保存していますか? http://bbmagnetさんのウェブページアドレス/php/emoji/trans.php にアクセスして、画像が表示されることを確認してみて下さい。

bbmagnet
質問者

補足

ご回等ありがとうございます。 trans.phpはディレクトリ内に保存してあります。 ただ、教えていただいたようにページにアクセスしたところ、 携帯からもWEBからもエラー表示が出ました。 これは、trans.phpのせいでしょうか? お分かりでしたら教えていただきたいと思いますので、 何卒よろしくお願いいたします。

関連する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
  • htaccessでphpとSSIを同時に動かす?

    http://www.dspt.net/tools/emoji/と同じように絵文字変換できるようにしたのですが、htaccessにAddHandler server-parsed htmlをすることになるので、今まで使っていたアクセス解析の「うごくひと2」が使えないです。 SSIとPHPをhtaccessで同時に動かすことは可能ですか? http://sb.xrea.com/showthread.php?t=14639で質問しているかたとほぼ同じ状況ですが、私はこの方法だとエラーになってしまいます。 ちなみにxhtmlではなくhtmlで作っています。 サーバーはハッスルです。 うごくひとを動かしていたときはAddHandler x-httpd-php .htmlをhtaccessに記述すると動作しました。 htaccessにAddHandler server-parsed htmlと AddHandler x-httpd-php .htmlをhtaccessに記述すると、絵文字が表示されるけどうごくひとは文字化けしてしまいます。 絵文字もアクセス解析も表示させるにはなにが必要でしょうか?

    • 締切済み
    • 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
  • 携帯サイトを作っています。

    携帯サイトを作っています。 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
  • 携帯サイトでの絵文字対応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
  • auの絵文字コードをphpソース内に記述

    PHPの中でHTMLを記述しstr_replace関数で 例として <!--emoji_1-->に対して<img localsrc="44" />に置換する方法をとっていますが、 実機で確認した場合 Auだけがなぜか (1)<p>絵文字:<!--emoji_1--></p>→変換OK! (2)<input type="submit" value="GO <!--emoji_1-->" /> ↓ <input type="submit" value="GO <img localsrc="44" />" /> サブミットにGo+ソースが文字として表示 (3)<title><!--emoji_1-->タイトルだよ</title> ↓ タイトルタグに記載したのにもかかわらず bodyの一行目に表示されます。 auの公式サイトには記載がなく、これはPHP側での変換処理の問題かと思い困っています。 このような経験のある方やアドバイスがあれば教えてください。

    • 締切済み
    • PHP
  • ドコモの絵文字だけが・・カラーで表示しない

    どうしてもドコモだけが、絵文字を呼び出した時に、黒色で表示され、本来のドコモの色付の絵文字になりません。 なお、構築方法は SSIをHTMLで表示させてHTMLファイルはSJISでコーディングしています。絵文字の呼び出しには <!--#include virtual="/php/trans.php?emoji=絵文字番号"--> バイナリデータをPHPで扱う場合には特殊な処理はしないとダメでしょうか。アドバイス願います。 サンプルコードは http://www.dspt.net/data/emoji/sample.txt ダータファイル http://www.dspt.net/data/emoji/emoji.csv

    • 締切済み
    • PHP
  • 現在、PHPにて携帯サイトを作成しています。

    現在、PHPにて携帯サイトを作成しています。 ほぼ完成しているのですが、絵文字処理にてつまづいています。 3キャリアに対しそれぞれの絵文字コードを割り振るスクリプト(下記URL参照)を設置しました。 http://dspt.blog59.fc2.com/blog-entry-57.html PHPファイルの、絵文字を表示させたい部分に <?php emoji('1');?> といった型で 独自のコードを挿入するだけで、各キャリア対応の絵文字が表示されるスクリプトです。 設置も動作テストも正常に出来ました。 ですが、私の場合、PHPファイルの「print <<<EOD  ・・・・ EOD;」内に、 絵文字を表示させたいのです・ そこに、<?php emoji('1');?>といったソースを表示させると、ソースがそのまま表示されてしまいます。 何か対処法はありませんでしょうか? お分かりになる方、アドバイス頂けるとうれしいです。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 携帯で3キャリア対応の絵文字を表示する方法

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

    • ベストアンサー
    • 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

専門家に質問してみよう