構文
int CONV_OutputMode(
int mode
);
パラメータ
- mode
-
[in] 変換結果の出力モードを指定します。
値 説明 CONV_OUTPUT_MODE_DEFAULT NULで終端する文字列で変換結果を出力します。(デフォルト) CONV_OUTPUT_MODE_COMPOSITE ローカル文字コードの文字列とUTF-8の文字列の両方を含むコンポジット形式で変換結果を出力します。 CURRENT_MODE 現在の設定値を返します。
戻り値
現在の出力モードの設定値を返します。解説
本関数で設定を行うことにより次の関数の出力フォーマットを変更します。
CONV_CP437oseToUtf8String関数
CONV_LocalToUtf8String関数
CONV_SjisToUtf8String関数
CONV_Utf8ToCP437oseString関数
CONV_Utf8ToLocalString関数
CONV_Utf8ToSjisString関数
CONV_LocalToUtf8String関数
CONV_SjisToUtf8String関数
CONV_Utf8ToCP437oseString関数
CONV_Utf8ToLocalString関数
CONV_Utf8ToSjisString関数
CP1252ライブラリの次の関数の出力フォーマットも変更します。
本関数でCONV_OUTPUT_MODE_DEFAULTを設定したとき(デフォルトの形式)の出力フォーマットは下図のとおりです。
変換結果の文字列 NUL
本関数でCONV_OUTPUT_MODE_COMPOSITEを設定したとき(コンポジット形式)の出力フォーマットは下図のとおりです。
変換前の文字列と変換結果の文字列が異なる場合:
ローカル文字コードの文字列 NUL UTF-8の文字列 NUL
変換結果の文字列が変換前の文字列と同じだった場合:
文字列 NUL NUL
コンポジット形式の出力では、変換関数の種類によらず、常にローカル文字コードの文字列、UTF-8の文字列の順に出力されます。 また、変換関数のoutput_lengthに出力される値は、変換先の文字コードの文字列のバイト数を返すことに注意してください。
(例1)CONV_SjisToUtf8String関数でSJISの"あい"を変換したときの出力
(例2)CONV_Utf8ToSjisString関数でUTF-8の"あい"を変換したときの出力
(例3)CONV_SjisToUtf8String関数でSJISの"123"を変換したときの出力
SJISの"あい" | NUL | UTF-8の"あい" | NUL |
← output_length → |
(例2)CONV_Utf8ToSjisString関数でUTF-8の"あい"を変換したときの出力
SJISの"あい" | NUL | UTF-8の"あい" | NUL |
← output_length → |
(例3)CONV_SjisToUtf8String関数でSJISの"123"を変換したときの出力
"123" | NUL | NUL |
← output_length → |
必要条件
ヘッダファイル:
CodeConversion.h (Ver. 1.1.1以降)ライブラリファイル:
libCodeConversion.a (Ver. 1.1.1以降)
libSTARTUPOPH5000.a
サンプル
#include <stdio.h>
#include "lib.h"
#include "CodeConversion.h"
// Get UTF-8 string from composite string buffer.
static char *getUtf8(char *buf)
{
char *rp = buf;
while(*rp++){ // skip the 1st string.
;
}
if (*rp){
return rp; // Return 2nd string if exists.
}else{
return buf; // Return 1st string otherwise.
}
}
void main(void)
{
size_t output_length;
char *src = "あい";
printf("src=[%s]\n\n", src);
// Save current output mode
int original_mode = CONV_OutputMode(CURRENT_MODE);
// Set CONV_OUTPUT_MODE_COMPOSITE
CONV_OutputMode(CONV_OUTPUT_MODE_COMPOSITE);
printf("SJIS->UTF-8\n");
char *output1 = CONV_SjisToUtf8String(src, -1, NULL, &output_length);
char *utf1 = getUtf8(output1);
printf(" SJIS =[%s]\n", output1);
printf(" UTF-8 =[%s]\n", utf1);
printf(" length =%d\n\n", (int)output_length); // = 6
printf("UTF-8->SJIS\n");
char *output2 = CONV_Utf8ToSjisString(utf1, -1, NULL, &output_length);
char *utf2 = getUtf8(output2);
printf(" SJIS =[%s]\n", output2);
printf(" UTF-8 =[%s]\n", utf2);
printf(" length =%d\n", (int)output_length); // = 4
// Restore output mode
CONV_OutputMode(original_mode);
free(output1);
free(output2);
while(1)
{
Idle();
}
}
最終更新日:2022/04/08