2019年5月28日火曜日

FileMaker SHIFT_JIS でURLエンコード

FileMaker SHIFT_JIS でURLエンコード(Code:127以下は%エンコードしない)

FileMaker Pro 16.0以降

スクリプト:URLから挿入 で、Windowsの場合、プロトコル「file://」や「smb://」を使う場合、日本語(全角混じり)のパスではエラーになります。

以下の式でURLエンコードすればOK。
例:
入力:smb://192.168.100.180/共有/
出力:smb://192.168.100.180/%8B%A4%97%4C/

Let(
[
   $Val = $arg ;
   $MAX = Length ( $Val ) ;
   $n = 1 ;
   $fnc0=
      "Case ( $n > $MAX ; $Result ;
         Let(
         [
         $text=Middle ( $Val ; $n ; 1 );
          $Result = $Result  & if(Code ( $text )>127;
       
Let(
[
   $txt = HexEncode ( TextEncode ( $text ; \"shift_jis\" ; 1 ) ) ;
   $pos = Length ( $txt ) - 1 ;
   $fnc=
      \"Case ( $pos < 0 ; $txt ;
         Let(
         [
            $txt = Replace ( $txt ; $pos ; 0 ; \\\"%\\\" ) ;
            $pos = $pos - 2
         ];
            Evaluate($fnc))
      )\"
];
   Evaluate($fnc)
)

           ;
            Middle ( $Val ; $n ; 1 )
           );
            $n = $n + 1
         ];
            Evaluate($fnc0))
      )"
];
   Evaluate($fnc0)
)


/*
%エンコード部分の再帰式は、Shinさんが書いたモノです。
https://fm-aid.com/bbs2/viewtopic.php?pid=50129#p50129
*/

0 件のコメント:

コメントを投稿