URLエンコードのデコーディング

Last-modified: 2009-06-17 (水) 19:05:04

UTF-8文字コード(またはEUCコード)でURLエンコードされた文字列をsjisに変換するプログラムです.
1バイト文字ならそのまま,%XXであれば,%をとりXXを16進$hex2.で変換し,
それをUTF-8のフォーマット$UTF8X.で,sjisにします.
eucでエンコードされている場合は,encoding="euc-jp"に変えれば変換できます.

*********************************************************
UTF-8 URL-encode decoding
081202 翔
*********************************************************;

data;
  file "tmp.txt";
  encode='EXCEL+%E3%82%B0%E3%83%A9%E3%83%95';  /*UTF-8がエンコードされている*/
  *encode='EXCEL+%A5%A6%A5%A3%A5%AD%A5%DA%A5%C7%A5%A3%A5%A2'; /*EUCがエンコードされている*/
  length hex $ 100;
  length char $ 1;
  length char2 $ 2;
  p=1;
  q=1;
  do until (p>length(encode));
    char=substr(encode,p,1);
    char2=substr(encode,p+1,2);
    if char="%" then do;
      substr(hex,q,1)=input(char2,$hex2.);
      p=p+3;
      q=q+1;
    end;
    else do;
      substr(hex,q,1)=char;
      p=p+1;
      q=q+1;
    end;
  end;
  put hex;
run;


data;
  infile "tmp.txt" encoding="utf-8"; /*UTF-8の場合*/
  *infile "tmp.txt" encoding="euc-jp"; /*EUCの場合*/
  input ;
  put _infile_;
run;

/* EXCEL+グラフ */
/*EXCEL+ウィキペディア*/