構文
char *CONV_LocalToUtf8String(
char *src,
int length,
int *error_code,
size_t *output_length,
CONV_LOCAL_TO_UNICODE LocalToUnicodeCallback
);
パラメータ
- src
- [in] カスタムコードの文字列を指すポインタ。
- length
- [in] 変換するバイト数を指定します。負の値を指定すると、srcが指す文字列がNULで終端するまでの範囲を変換します。
- error_code
- [out] エラーコードを返す変数を指すポインタ。エラーコードが不要のときはNULLを指定します。
- output_length
- [out] 変換結果の終端のNULを除いたバイト数を返す変数を指すポインタ。バイト数が不要のときはNULLを指定します。
- LocalToUnicodeCallback
- [in] カスタムコードをUnicodeに変換するコールバック関数を指すポインタ。
戻り値
変換が成功したら変換結果を格納したバッファを指すポインタを、それ以外はNULLを返します。解説
アプリケーションプログラムで独自に定義した文字コード(カスタムコード)の文字列を、UTF-8の文字列に変換するときは本関数を使用します。srcが指すカスタムコードの文字列の先頭からlengthで指定した長さの文字列をLocalToUnicodeCallbackで指定されたコールバック関数で変換し、変換結果を格納したバッファを指すポインタを返します。
lengthに負の値を指定すると、srcが指す文字列がNULで終端するまでの範囲を変換します。
srcが指す文字列がlengthで指定した長さに到達する前にNULが検出されたときは、NULまでの文字列を変換します。
srcが指す文字列にUnicodeに変換できない文字コードが含まれていたら、その文字を'?'に置き換えて変換を継続します。この場合は、error_codeが指す変数に次のエラーコードを返します。
エラーコード | 説明 |
---|---|
CONV_UNSUPPORTED_CODE_WARNING | 変換できない文字コードが含まれていた。 |
変換が成功したら、変換結果の文字列の最後をNULで終端し、変換結果のNULを除いたバイト数をoutput_lengthが指す変数に返します。
変換が失敗したときはNULLを返し、error_codeが指す変数に次のエラーコードを返します。
エラーコード | 説明 |
---|---|
CONV_INVALID_PARAMETER_ERROR | パラメーターエラー |
CONV_MEMORY_ALLOCATION_ERROR | メモリーアロケーションエラー |
本関数がNULL以外の値を返したときは、free関数でバッファを解放する必要があります。
LocalToUnicodeCallbackで指定したコールバック関数でカスタムコードをUnicodeに変換します。コールバック関数のインターフェースは次のとおりです。
構文
typedef int (*CONV_LOCAL_TO_UNICODE)(
int localByte
);
パラメータ
- localByte
- [in] 1~255の範囲の文字コード。カスタムコードを指定します。
戻り値
変換が成功したらUnicodeを、それ以外は-1を返します。解説
localByteで指定したカスタムコードをUnicodeに変換して返します。このコールバック関数のインターフェースは次の関数と互換性があります。
CONV_CP437oseToUnicode関数
必要条件
ヘッダファイル:
CodeConversion.hライブラリファイル:
libCodeConversion.a
libSTARTUPOPH5000.a
サンプル
サンプル
// Callback function
int MyCP437ToUnicode(int localByte)
{
if (localByte == 0x9B){
return 0x00A2; // 0x9B -> '¢'
}else if (localByte == 0x9D){
return 0x00A5; // 0x9D -> '¥'
}else{
// Use CONV_CP437oseToUnicode() for the other code.
return CONV_CP437oseToUnicode(localByte);
}
}
// Customized conversion
char *MyCP437ToUtf8String(char *src, int length, int *error_code, size_t *output_length)
{
char *ret = CONV_LocalToUtf8String(src, length, error_code, output_length, MyCP437ToUnicode);
return ret;
}
関連事項
最終更新日:2021/08/02