2021年6月10日木曜日

特定文字のunicodeが知りたい話

 βとかαなどギリシア文字に半角用フォントを充てるときや,≧や③といった文字を出力するときにunicodeを直接指定するときがあると思います.βなら^{unicode 2265}だったりする4文字のやつですね.毎度unicodeを検索しなくてもunicodec関数を使用すればsasである程度は表示できるので,その関数の紹介です.

例えば以下の実行結果ですが,上で取り上げたβと≧のunicodeをlogに出しています.

131    data _null_ ;
132      str1 = unicodec("β" ) ;
133      str2 = unicodec("≧" ) ;
134      putlog "β:" str1 "≧:" str2 ;
135    run ;

NOTE: DATAステートメント処理(合計処理時間):
      処理時間           0.00 秒
      CPU時間            0.00 秒

β:\u03B2 ≧:\u2267

他にも③だと以下の通りです.

136    data _null_ ;
137      str1 = unicodec("③" ) ;
138      putlog "③:" str1 ;
139    run ;

NOTE: DATAステートメント処理(合計処理時間):
      処理時間           0.00 秒
      CPU時間            0.00 秒

③:\u2462

分からなくて毎回調べるのが大変だったのでユニコードを出力できるこのunicodec関数は結構助かっています.sasのhelpを見ると「This function reads characters that are in the current SAS session encoding and converts them to Unicode encoding.」とあるので,現在のsasのセッションエンコーディングの文字を読み取って,unicodeに変換する関数のようです.なのでsjisの環境だと上付きの数字などのunicodeを出せないのが残念でならないです…上付きの数字は結構使うので惜しいところです.unicode環境で上付き文字を指定するとunicodeは出せると思います.試してないですが.

ちなみにunocodec関数には第二引数があり出力時のエスケープ文字を変えれるのですが,今回のようなユニコードを調べるだけならデフォルトのままで不都合がないのでそのままにしています.例えば第二引数に"paren"と指定すると<03B2>のようにカッコくくりになります

0 件のコメント:

コメントを投稿