文字コードの定数(CP_○○)
文字コードの定数は、文字コードを指定したいときに使用します。
文字コードを指定しない場合は、自動的にWindowsOSのANSI(CP_ACP)の文字コードが使用されます。
MQL4のプログラミングでは、文字コードを変換する場合はほとんどないので、文字コードは特に指定する必要はありません。
しかし、OSが変わった時に文字化けなどの不具合が出ることがあります。
その時に文字コードを指定すると良いでしょう。
文字コードを指定できる関数は以下の通りです。
これらの関数の引数として、文字コードの定数が使用されます。
- CharArrayToString
- StringToCharArray
- FileOpen
文字コードの定数(CP_○○)
定数 | 数値 | 説明 |
CP_ACP | 0 | WindowsANSIコードページ |
CP_OEMCP | 1 | 現在のシステムのOEMコードページ |
CP_MACCP | 2 | Macintoshコードページ |
CP_THREAD_ACP | 3 | 現在のスレッド用のWindowsANSIコードページ |
CP_SYMBOL | 42 | シンボルコードページ |
CP_UTF7 | 65000 | UTF-7コードページ |
CP_UTF8 | 65001 | UTF-8コードページ |
文字コードの定数(CP_○○)の使い方
文字コードを指定できる関数で使用します。
例えば、StringToCharArray関数で使用する場合は、以下のように使用します。
void OnInit() {
string tmpstr = "ABCDE";
uchar tmparray[];
int copyednum;
ArrayResize(tmparray,6); // 動的配列のサイズを6に変更
copyednum = StringToCharArray(
tmpstr, // コピー元の文字列
tmparray, // コピー先配列
1, // コピー開始する配列インデックス
3, // コピーする文字数
CP_ACP // コードページ:ANSI
);
for ( int icount =0 ; icount < 6 ; icount++ ) {
printf( "tmparray[%d] = %c",icount, tmparray[icount]);
}
Print("コピー数:",copyednum);
}
上記のように記述すると、以下のように表示されます。
tmparray[0] =
tmparray[1] = A
tmparray[2] = B
tmparray[3] = C
tmparray[4] =
tmparray[5] =
コピー数:3