CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Zmiana kodowania z UTF-8 to CP1250 / poprawność kodu

Zmiana kodowania z UTF-8 to CP1250 / poprawność kodu

dział ogólny

Zmiana kodowania z UTF-8 to CP1250 / poprawność kodu

Nowy postprzez Darek_C++ » piątek, 26 listopada 2010, 17:17

Szukając rozwiązania dla problemu opisanego w topicku :
viewtopic.php?f=16&t=1014&start=0&hilit=Utf8ToAnsi
który dla przypomnienia problem polegał na tym, że funkcja Utf8ToAnsi() dla kodu pewnych stron www które deklarują się jako UTF-8 nie działała prawidłowo np:
http://www.serwisdom.pl/finanse-i-ubezp ... dkowe.html
znalazłem taki kod prototypowy:

KOD cpp:     UKRYJ  
WCHAR* buff = new WCHAR[(int)src.length()+1];
char* buff2 = new char[1024];

memset(buff,0,sizeof(WCHAR)*((int)src.length()+1));
memset(buff2,0,sizeof(char)*1024);

MultiByteToWideChar(CP_UTF8,0,src.c_str(),(int)src.length(),buff,(int)src.length()+1);
WideCharToMultiByte(1250,0,buff,(int)src.length(),buff2,(int)src.length(),NULL,NULL);
który ze względu [jak sadze] na zbyt mały rozmiar bufora char[1024]; się, wysypywał więc przepisałem go na taki kod:

KOD cpp:     UKRYJ  
String  ConvertUTFto1250(String input)
{
        try
        {
                int rozmiar = input.Length();
                WCHAR* buff = new WCHAR[(int)input.Length()+1];
                char* buff2 = new char[rozmiar];
                memset(buff,0,sizeof(WCHAR)*((int)input.Length()+1));
                memset(buff2,0,sizeof(char)*rozmiar);

                MultiByteToWideChar(CP_UTF8,0,input.c_str(),(int)input.Length(),buff,(int)input.Length()+1);
                WideCharToMultiByte(1250,0,buff,(int)input.Length(),buff2,(int)input.Length(),NULL,NULL);

                String temp = (String)buff2;
                delete[]buff;
                delete[]buff2;

                return temp.Trim();

        }
        catch (...)
        {
                return "BLAD";
        }
}


Kod działa w TMemo są polskie znaki...
Pytanie brzmi czy jest prawidłowy jak chodzi o dynamiczny przydział pamięci ?
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
Podziękował : 66
Otrzymał podziękowań: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    Windows XPFirefox

  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 7 gości

cron