サポートチーム便り2025.08.27
IBM i でURLエンコードする方法はありますか?
Question
URLエンコードを行いたくてWebで調べ「javaでの連携」「SYSTOOLSを使用する」等ありました。
しかし今いちピンと来ず、実装までたどり着きませんでした。
URLエンコード方法についてご教授いただけないでしょうか。
Answer
お調べいただいたようにURLエンコードにはいくつか方法があります。
例えば、HTTPAPIライブラリーを用いて、RPGからAPI連携をする方法がありますが、HTTPAPIライブラリーにURLエンコード用の関数(http_urlEncode)もあるのですが、日本語には対応していません。
そこで、OSから提供されるスカラー関数を用いることで、日本語(DBCS)のエンコードを実現できます。
例) IBM i Access Client Solutions(ACS) の SQL スクリプトの実行
VALUES URL_ENCODE('あ')
結果 %E3%81%82

このように結果が返ることを活用し、アプリケーションに組み込んで利用します。
SQL の組み立てはプログラミング・アプリケーション開発支援になる為、踏み込んでの言及は出来かねますがサンプルとして以下のようにSQLRPGに実装します。
//free
ctl-opt dftactgrp(*no) actgrp(*caller);
dcl-s Name varchar(50);
dcl-s UrlName varchar(50);
Name = 'test &=+-*/';
exec sql
values(URL_ENCODE(:Name)) into :UrlName;
dsply UrlName;
*inlr = *on;
return;
//end-free
私もURL内で特殊文字やスペース、日本語などの非ASCII文字を、ブラウザやサーバーが正しく解釈できるように変換するURLエンコードのように、お客様のご相談に対して、小難しい専門用語はなるべく避け、解釈しやすいようご説明できるよう日々精進していきたく思います。
by . 大熊猫橋