int my_ucs2le_validator( const char *ucs2str, int ucs2str_length, int *bValid ) { int err = 0; // エラー情報 charsetmanager_validator_property_ptr cvpp = NULL; // バリデーション情報格納領域 charsetmanager_validator_error_status status; // 詳細エラー情報 if( NULL == ( cvpp = charsetmanager_validator_open("UTF-16LE", &err ) ) ) // Validationの開始 return(-1); // Validation開始のエラー if( 0 != charsetmanager_validator_set_policy_file( cvpp, "UCS2.policy", &err )) { // バリデーションポリシーを設定 charsetmanager_validator_close( cvpp, &err ); return(-2); // ポリシー設定のエラー } // バリデーションの実行 if( 0 == charsetmanager_validator_validate(cvpp, ucs2str, ucs2str_length, NULL, &status, &err) ) *bValid = 1; // 文字列は有効 else if(CHARSETMANAGER_VALIDATOR_ERROR_CODE_INVALID == err ) { // 無効文字あり printf( "String is not valid. index = %d, length = %d\n", status.index, status.invalidcodelen ); *bValid = 0; } else { // その他のエラー charsetmanager_validator_close( cvpp, &err ); return(-3); } charsetmanager_validator_close( cvpp, &err ); // Validationの終了 return 0; }