関数索引
URI または URI の一部分を適切にエンコードします。これらの関数は、同名の javascript の関数と同じ動作をします。
encodeURI() 関数は uri に URI (例えば "http://www.example.com/branch?name=東京支店" など) を受け取り、必要な部分を適切にエンコードします。
encodeURIComponent() 関数は uripart URI の一部として使用したい文字列(例えば "東京支店" など)を受け取り、必要な部分を適切にエンコードします。
このふたつの関数は、同名の javascript の関数と同じ動作をします。
encodeURI() 関数は引数に与えられた文字列の中の A-Z a-z 0-9 ; , / ? : @ & = + $ - _ . ! ~ * ' ( ) # 以外のすべての文字を %xx 形式にエンコードします。エンコーディングは UTF-8 になります。スペースは + ではなく %20 にエンコードされる点にご注意ください。この動作仕様は javascript の encodeURI() 関数に合わせてあります。
encodeURIComponent() 関数は引数に与えられた文字列の中の A-Z a-z 0-9 -_.!~*'() 以外のすべての文字を %xx 形式にエンコードします。エンコーディングは UTF-8 になります。スペースは + ではなく %20 にエンコードされる点にご注意ください。この動作仕様は javascript の encodeURI() 関数に合わせてあります。
URI 全体をまとめてエンコードします。
<html>
<body>
....
<a href="%encodeURI("https://example.com/branch?name=東京支店")%>東京支店</a>
....
</body>
</html>
encodeURI() によって生成される URI は https://example.com/branch?name=%E6%9D%B1%E4%BA%AC%E6%94%AF%E5%BA%97 になります。
URI を構成する一部分をエンコードします。
<html>
<body>
....
<a href="https://example.com/branch?name=%encodeURIComponent("東京支店")%&country=%encodeURIComponent("日本")%">東京支店</a>
....
</body>
</html>
a 要素の href 属性の値は https://example.com/branch?name=%E6%9D%B1%E4%BA%AC%E6%94%AF%E5%BA%97&country=%E6%97%A5%E6%9C%AC になります。
以下のような展開を持つテンプレートを作成して、そのテンプレートからページを作成します。そのページをプレビューしてみましょう。このテンプレートは encodeURI() と encodeURIComponent() を、javascript で実行した場合の結果と本関数で実行した場合の結果を並べて表示します。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=%encoding()%">
<title>%pageTitle()%</title>
</head>
<body>
<wr-variable name="string"> !"#$%%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~祝い</wr-variable>
<script>
// WebRelease の encodeURI() の実行結果
document.write(%jstr(encodeURI(string), "d")%) ;
document.write("<br>") ;
// javascript の encodeURI() の実行結果
document.write(encodeURI("%jstr(string)%")) ;
</script>
<hr>
<script>
// WebRelease の encodeURI() の実行結果
document.write(%jstr(encodeURIComponent(string), "d")%) ;
document.write("<br>") ;
// javascript の encodeURI() の実行結果
document.write(encodeURIComponent("%jstr(string)%")) ;
</script>
</body>
</html>
プレビューの結果は
%20!%22#$%25&'()*+,-./0123456789:;%3C=%3E?@ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5C%5D%5E_%60abcdefghijklmnopqrstuvwxyz%7B%7C%7D~%E7%A5%9D%E3%81%84 %20!%22#$%25&'()*+,-./0123456789:;%3C=%3E?@ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5C%5D%5E_%60abcdefghijklmnopqrstuvwxyz%7B%7C%7D~%E7%A5%9D%E3%81%84 %20!%22%23%24%25%26'()*%2B%2C-.%2F0123456789%3A%3B%3C%3D%3E%3F%40ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5C%5D%5E_%60abcdefghijklmnopqrstuvwxyz%7B%7C%7D~%E7%A5%9D%E3%81%84 %20!%22%23%24%25%26'()*%2B%2C-.%2F0123456789%3A%3B%3C%3D%3E%3F%40ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5C%5D%5E_%60abcdefghijklmnopqrstuvwxyz%7B%7C%7D~%E7%A5%9D%E3%81%84
になるでしょう。javascript WebRelease ともに同じ結果になっているのが確認できます。
なお、このサンプルで利用している document.write() は推奨される書き方ではありません。ご了承ください。