Unicodeのユーティリティルーチン

%UTF2HEX および %HEX2UTFの Mユーティリティ・ルーチンは、UTF-8と16進コードポイント表現の間の変換を提供します。どちらのユーティリティもUTF-8モードでのみ動作します; Mモードでは、両方とも実行時エラーが発生します。

%UTF2HEX

GT.M の %UTF2HEX ユーティリティは、UTF-8でエンコーディングされたGT.M文字列の内部エンコーディングのバイトの16進表記で返します。このルーチンは、対話的または非対話的のどちらの使用でのエントリポイントがあります。

DO ^%UTF2HEX は、%Sに格納されている文字列を16進バイト表記に変換し、その結果を%Uに格納します。

DO INT^%UTF2HEX は、インタラクティブに入力された文字列を16進バイト表記に変換し、その結果を%Uに格納します。

$$FUNC^%UTF2HEX(s) は、文字列 s の16進バイト表現を返します。

例:

GTM>write $zchset
UTF-8
GTM>SET %S=$CHAR($$FUNC^%HD("0905"))_$CHAR($$FUNC^%HD("091A"))_$CHAR($$FUNC^%HD(
"094D"))_$CHAR($$FUNC^%HD("091B"))_$CHAR($$FUNC^%HD("0940"))
GTM>zwrite
%S="अच्छी"
GTM>DO ^%UTF2HEX
GTM>zwrite
%S="अच्छी"
%U="E0A485E0A49AE0A58DE0A49BE0A580"
GTM>write $$FUNC^%UTF2HEX("ABC")
414243
GTM>

%UTF2HEXは、UNIXバイナリ・ダンプ・ユーティリティ( od -x )と同様の機能を提供します。

%HEX2UTF

GT.Mの %HEX2UTFユーティリティは、16進表記で指定されたバイトストリームからGT.MのUTFエンコードの文字列へ変換します。このルーチンは、対話的または非対話的のどちらの使用でのエントリポイントがあります。

DO ^%HEX2UTF は、%Uに格納された16進バイトストリームをGT.M文字列に変換し、その結果を %S に格納します。

DO INT^%HEX2UTF は、対話形式で入力された16進バイトストリームをGT.M文字列に変換し、その結果を%Sに格納します。

$$FUNC^%HEX2UTF(s) は、s の16進文字値で指定されたGT.M文字列を返します(各文字はUnicodeコードポイントで指定されます)。

例:

GTM>set u="E0A485" write $$FUNC^%HEX2UTF(u)

GTM>set u="40E0A485" write $$FUNC^%HEX2UTF(u)
@
GTM>
inserted by FC2 system