;---------- ---------- ---------- ---------- ---------- ; 作成者のURL ---> http://www.setsuki.com/ ;---------- ---------- ---------- ---------- ---------- ;========== ========== ========== ========== ========== ; URLをデコードする ( %82%A0 → あ ) ;---------- ---------- ---------- ---------- ---------- ; ; url_decode(p1) ; ; p1 = デコードする文字列 ; ;========== ========== ========== ========== ========== ; URLをエンコードする ( あ → %82%A0 ) ;---------- ---------- ---------- ---------- ---------- ; ; url_encode(p1) ; ; p1 = エンコードする文字列 ; ;========== ========== ========== ========== ========== #module ;---------- ---------- ---------- ---------- ---------- ; 1byte読み出し、数値に変換 #defcfunc peek16 var buf, int off a = peek(buf,off) if(a>='A')&(a<='F') : return a-55 if(a>='a')&(a<='f') : return a-87 return a-48 ;---------- ---------- ---------- ---------- ---------- #global #module ;---------- ---------- ---------- ---------- ---------- #defcfunc url_decode var def len = strlen(def) : if len<1 : return "" sdim ans,len : i=0 : j=0 repeat len if i >= len : break a = peek(def,i) : i++ if a == '%' { b = peek16(def,i) : i++ a = peek16(def,i) : i++ a += b<<4 } poke ans,j,a : j++ loop return ans ;---------- ---------- ---------- ---------- ---------- #defcfunc url_encode var def len = strlen(def) : if len<1 : return "" sdim ans,len*3 : i=0 repeat len a = peek(def,i) if(a=='.')||(a=='-')||(a=='_')||((a>='0')&(a<='9'))||((a>='A')&(a<='z')){ ans+=strmid(def,i,1) } else { ans+="%"+strf("%x",a) } i++ loop return ans ;---------- ---------- ---------- ---------- ---------- #global //サンプル u1 = "%82%DE%82%B5%82%E1%82%D8%82%E7%82%E8" u2 = "森々せつき" dialog u1+"\n↓( デコード )\n"+url_decode(u1)+"\n\n"+u2+"\n↓( エンコード )\n"+url_encode(u2)