Wyświetlanie UTF-8 w oknie

0

Witam,
szukam od dwóch dni i nie mogę nigdzie znaleźć rozwiązania.
W C++ malutko piszę więc wybaczcie jeżeli rozwiązanie jest banalne.

Do rzeczy:
W dev C++ za pomocą InternetOpenUrl pobieram dane z internetu, strona kodowana w UTF-8, po wyświetleniu otrzymuję coś takiego (załącznik). Jak to ogarnąć żeby wyświetlało się poprawnie? Mogę również dokonać odpowiedniej zmiany w kodzie PHP strony więc pole manewrów dosyć duże (być może dlatego błądzę ciągle nie trafiając na parę, która da konkretny wynik) więc podpowiedzi z PHP również mile widziane.

Kombinowałem już ze zmianą kodowania w PHP, przekazywaniem numerów znaków, itp. ... ciągle jednak nie trafiłem na poprawne wyświetlanie znaków.

Aplikacja docelowo ma być na cały świat więc oprócz polskich znaków chodzi mi również o np. cyrylicę i wszelkie inne znaki/kodowania (oczywiście w Polsce nie muszę mieć cyrylicy, system dobiera 'oferty' po kraju więc brak znaków w czcionkach systemowych rozwiąże się zapewne sam) dlatego fajnie byłoby jakby działało to na unikodzie.

1

Albo użyj biblioteki graficznej, która ma wsparcie dla unicode - np. Qt, albo wszystkie otrzymane stringi tłumacz do standardowego w WinAPI utf16. Z C++11 to nawet nie jest takie trudne.

0

Windows nie obsługuje UTF-8. Musisz przekonwertować na UTF-16.

0

OK. Próbowałem na wszystkie sposoby (bez bibliotek QT) i nic mi się nie udało.

Jest ktoś w stanie mi podstawić "gotowe" rozwiązanie? Wiem, że o gotowca się nie prosi, ale na prawdę już wszystkiego próbowałem, a zewnętrznych bibliotek jeszcze dodatkowych chciałbym uniknąć (chociaż właśnie będę próbował, na upartego ją dołączę).

Wrzucam sam kod pobierający dane oraz kod strony ... jakby ktoś pomógł będę wdzięczny.

			LoadLibrary("riched32.dll");
			listOffers = CreateWindow("LISTBOX", NULL,
				WS_CHILDWINDOW | WS_VISIBLE | WS_BORDER | WS_VSCROLL,
				10, 176, 320, 190,
				hwnd, (HMENU) 100, NULL, NULL);

			HINTERNET hInet, hConn, hUrl;
			
			hInet = InternetOpen("HTTPGET", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
			hConn = InternetConnect(hInet, "firecash.org", 80, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);
			source = "http://tutajadresdostrony.pl/test.html";
			hUrl = InternetOpenUrl(hInet, source.c_str(), NULL, 0, 0, 0);
			
			if(hUrl != NULL)
				{
					DWORD dword;
		    		char data[40960];
					BOOL get_data = InternetReadFile(hUrl, data, sizeof(data), &dword);
					InternetCloseHandle(hUrl);
		    		string code;
		    		code = data;
	
		    		int len, pos1, len1;
		    		string temp_offer, offer_title, url;
	
					for(int pos = code.rfind("<offer>") + 7; pos != 6; pos = code.rfind("<offer>") + 7, offerIndex++)
		    			{
		    				len = code.find("</offer>", pos);
		    				temp_offer = code.substr(pos, len);
					   
		    				pos1 = temp_offer.find("<title>") + 7;
		    				len1 = temp_offer.find("</title>") - pos1;
	
		    				offer_title = temp_offer.substr(pos1, len1);
	
							int k = (int)SendMessage(listOffers, LB_ADDSTRING,0, (LPARAM) offer_title.c_str());
					        SendMessage(listOffers, LB_SETITEMDATA, k, (LPARAM) offerIndex);
	
		    				code = code.substr(0, pos - 7);
		    			}
	
		    		return 1;
				}
			else
				MessageBox(NULL, "Chcek internet connetcion.", "Info", MB_ICONINFORMATION|MB_OK);

Poniżej kod strony, plik zakodowany w UTF-8:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><offer><title>Rozpocznij pobieranie</title><url></url></offer><offer><title>Pobierz swój plik !</title><url>asdfasdf</url></offer><offer><title>Weź udział w badaniu i wygraj Ipad\'a</title><url>asdf</url></offer><offer><title>wyślij sms z bramki sms</title><url>asdfqwe</url></offer><offer><title>Rozpocznij pobieranie !</title><url>qewfdvsc</url></offer><offer><title>Odblokuj pobieranie</title><url>3rgeg</url></offer>

------------------- EDIT ------------------------
Właśnie zmieniłem kodowanie pliku html z UTF-8 na ANSI i mam polskie znaki :) - proszę jeszcze o nie oznaczanie jako rozwiązany - przerzucę to do właściwego programu - mam nadzieję, że zadziała.

1 użytkowników online, w tym zalogowanych: 0, gości: 1