localhost에서 실행중인 Firebird 데이터베이스 서비스에 새로운 사용자를 추가하는 데 문제가 있습니다. 클라이언트 라이브러리 fbclient.dll 호출 isc_add_user은 335544754 (isc_error_adding_sec_record) 및 335544849 (isc_malformed_string) 오류 코드와 함께 실패합니다. 문제는 발음 구별과 분명히 관련되어 있습니다.파이어 버드 연결 문자셋
[0] 'J'74 (0x4A)
[1] 'A':이 바이트 구조 필드 data.first_name의 콘텐츠
bool FirebirdService::AddUser(User &user)
{
ISC_STATUS status[20] = { 0 };
USER_SEC_DATA data = { 0 };
AnsiString server = (ip == L"localhost") || ip.IsEmpty() ? AnsiString("localhost") : AnsiString(ip);
AnsiString dba_user_name = app_config.AdminUser;
AnsiString dba_password = app_config.AdminPassword;
AnsiString name = user.GetLogin();
AnsiString password = user.GetPassword();
AnsiString first_name = user.GetFirstName();
AnsiString last_name = user.GetLastName();
data.sec_flags = sec_dba_user_name_spec | sec_dba_password_spec | sec_first_name_spec | sec_last_name_spec;
data.server = server.c_str();
data.protocol = (ip == L"localhost") || ip.IsEmpty() ? sec_protocol_local : sec_protocol_tcpip;
data.dba_user_name = dba_user_name.c_str();
data.dba_password = dba_password.c_str();
data.user_name = name.c_str();
data.first_name = first_name.c_str();
data.last_name = last_name.c_str();
data.password = password.c_str();
if (isc_add_user(status, &data))
{
return false;
}
return true;
}
이다 :이 소스 코드의 관련 부분 -31 (0xE1)
[2], N '(110) (0x6E)
[3]'\ 0 0 (0 × 00)
로서 S 두 번째 문자 'á'를 'a'로 변경하면 isc_add_user에 대한 호출이 성공합니다. 이런 상황을 어떻게 적절하게 처리해야합니까? utf-8 또는 utf-16으로 연결 문자 세트를 변경하는 방법이 있습니까?