C api, mysql, brak polskich znakow

0

witam, robię program, który łączy się z bazą mysql i dane wstawia do listy combobox.
Łączy się itp, tylko nie mogę zrobić, aby wyświetlał mi polskie znaki z bazy.
Na początku zamiast polskich znaków miałem znaki zapytania, wiec dodałem ten kawałeczek kodu:
mysql_options(&mysql,MYSQL_SET_CHARSET_NAME,"utf8");
jednak teraz wywala krzaczki.
Korzystam z dev c++, baza localhost i wszędzie ustawione utf8_general_ci.
mógłby ktoś podpowiedzieć jak sobie z tym poradzić?



#include <windows.h>
 #include <commctrl.h>
#include <c:\Program Files\MySQL\MySQL Connector C 6.0.2\include\mysql.h>
//ZMIENNE POTRZEBNE DO POLACZENIA Z BAZA
MYSQL mysql;
MYSQL_RES *res;	
MYSQL_ROW row;
int num_fields;
 HWND hCombo,hWnd;
 CHAR szClassName[]="OknoRodzica";
 HINSTANCE* hInst;

 LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);

 INT WINAPI WinMain(HINSTANCE hInstance,HINSTANCE,LPSTR lStart,INT nShow)
 {
			//ZAINICJOWANIE POLACZENIA Z BAZA
	mysql_init(&mysql);
	mysql_options(&mysql,MYSQL_SET_CHARSET_NAME,"utf8");
	INT a;
	if (!mysql_real_connect(&mysql,"localhost","root","","przystanki",0,NULL,0))
	{
    	  a=MessageBox(HWND_DESKTOP,"niePolączony",":>",MB_OK);
	}else{
		
	}
   hInst=&hInstance;
   WNDCLASSEX wc;
   wc.hInstance=*hInst;
   wc.lpszClassName=szClassName;
   wc.lpfnWndProc=WndProc;
   wc.style=0;
   wc.cbSize=sizeof(WNDCLASSEX);
   wc.hIcon=LoadIcon(0,IDI_APPLICATION);
   wc.hIconSm=LoadIcon(0,IDI_APPLICATION);
   wc.hCursor=LoadCursor(0,IDC_ARROW);
   wc.lpszMenuName=0;
   wc.cbClsExtra=0;
   wc.cbWndExtra=0;
   wc.hbrBackground=(HBRUSH)COLOR_BACKGROUND;
   if(!RegisterClassEx(&wc)) return 0;
   hWnd=CreateWindowEx(0,szClassName,"Lekcja-ComboBox",WS_OVERLAPPEDWINDOW,20,20,600,300,0,0,*hInst,0);
   ShowWindow(hWnd,nShow);
   MSG msgs;
   while(GetMessage(&msgs,0,0,0))
   {
     TranslateMessage(&msgs);
     DispatchMessage(&msgs);
   }
   return msgs.wParam;
 }

 LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wPar,LPARAM lPar)
 {
   switch(msg)
   {
     case WM_CREATE:
       hCombo=CreateWindowEx(0,WC_COMBOBOX,0,WS_CHILD|WS_VISIBLE|CBS_DROPDOWNLIST|WS_VSCROLL,10,10,570,300,hwnd,0,*hInst,0);
        mysql_query(&mysql,"SELECT `przystanek` FROM `baza_przystankow`");
	res = mysql_store_result(&mysql);	
	num_fields = mysql_num_fields(res);
	while ((row = mysql_fetch_row(res)))
	{
		for(int i = 0; i < num_fields; i++)
    	{
			SendMessage(hCombo, CB_ADDSTRING, 0, (LPARAM)row[i]);

    	}
	}
       break;
     case WM_DESTROY:
       DestroyWindow(hCombo);
       PostQuitMessage(0);
       break;
     default:
       return DefWindowProc(hwnd,msg,wPar,lPar);
   }
   return 0;
 } 
1

Powinieneś użyć wchar_t zamiast char.

Podobny problem:
http://stackoverflow.com/questions/1373463/handling-special-characters-in-c-utf-8-encoding

0

dzieki, przekonwertowalem char na wchar i zadzialalo

0

mam podobny problem, wszystkiego juz pobowalem i zostaje mi jeszcze rozwiazanie z tego forum, ale nie wiem za bardzo gdzie nalezy przekonwertowac char na wchar ???
bedę wdzieczny za odpowiedz..

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.