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, botów: 0