Problem z UTF8 i funkcją Utf8ToAnsi

problemy z tworzeniem programów do obsługi sieci, internetu, e-mail itp..

Problem z UTF8 i funkcją Utf8ToAnsi

Nowy postprzez Darek_C++ » niedziela, 11 lipca 2010, 17:20

Witam ponownie,
Problem jest taki, że niektóre serwisy np:

http://www.seo.sco.warszawa.pl/e/Wypade ... pracy,1234
http://www.serwisdom.pl/finanse-i-ubezp ... dkowe.html

Mają jako deklaracje kodowanie UTF-8 wiec pobieram dane u komponentem INDY:
Kod: Zaznacz cały
String this->kodHtml;
this->kodHtml = IdHTTP1->Get(zadanyUrl);
Memo1->Text = this->kodHtml ; // Dane się pojawią ale wiadomo polskie znaki są krzaczaste
Memo2->Text = Utf8ToAnsi(this->kodHtml) ; // Dane się wcale nie pojawią

przy większości serwisów z deklaracją kodowania UTF-8 funkcja Utf8ToAnsi dekoduje dana do jak sądzę CP1250 i polskie znaki są czytelne.
Jednak są takie serwisy jak te dwa przykładowo podane które zwracają dane jednak funkcja Utf8ToAnsi sobie nie radzi nic nie zwracając :(

Jak sobie poradzić z tym problemem. Dodam, że korzystam z Turbo C++ Explorer.
Proszę o pomoc.
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

Re: Problem z UTF8 i funkcją Utf8ToAnsi

Nowy postprzez Cyfrowy Baron » niedziela, 11 lipca 2010, 18:07

Problem polega na tym, że Ty przepisujesz stronę w formacie UTF-8 do zmiennej typu AnsiString. Nie wiem jak to jest w Turbo C++, ale pewnie polskie znaki są wtedy zastępowane, np. ą jest zastępowane a (u mnie tak jest) lub też wstawiane są krzaczki. Wczytując stronę UTF-8 do zmiennej AnsiString dokonujesz konwersji, więc potem nie ma czego konwertować funkcję Utf8ToAnsi. To zresztą zadziałać nie może gdyż zmienna AnsiString nie jest w stanie przechowywać znaków Unicode. Potrzebowałbyś zmiennej typu Unicode, by pomieścić w niej taka stronę.

Ten temat był już wielokrotnie poruszany na tym forum. Ja osobiście używam C++Builder 2010 i tutaj domyślnym typem jest UnicodeString, więc nie ma problemu z konwersją.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z UTF8 i funkcją Utf8ToAnsi

Nowy postprzez Darek_C++ » niedziela, 11 lipca 2010, 20:05

W takim razie dlaczego większość stron w kodowaniu UTF-8 których dane zostaną wczytane do AnsiString i nstępnie konwertowane funkcją Utf8ToAnsi() uzyskują poprawne polskie znaki, a tylko nieliczne nie. Problem leży gdzie indziej tylko kwestia gdzie i jak się z nim uporać.
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

Re: Problem z UTF8 i funkcją Utf8ToAnsi

Nowy postprzez Cyfrowy Baron » niedziela, 11 lipca 2010, 21:36

Sprawdzałem te strony i mimo iż maja kodowanie UTF8 to u mnie do Memo bez żadnych zabiegów wczytują się poprawnie. Trudno mi jednak znaleźć rozwiązanie, gdyż nie mam już dostępu do starszych wersji środowiska, a w C++Builder 2010 domyślnie jest UnicodeString, więc problemu nie ma. Przeprowadziłem testy z AnsiString, ale u mnie to działa bez funkcji UTF8 i po prostu polskie znaki diakrytyczne przy zapisie do AnsiString są zamieniane na zwykłe, czyli ą na a, ę na e, itp...
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z UTF8 i funkcją Utf8ToAnsi

Nowy postprzez Cyfrowy Baron » niedziela, 11 lipca 2010, 21:51

Jak wspomniałem ten temat był już szeroko opisywany na tym forum, wystarczy posłużyć się wyszukiwarką:

http://www.programowanie.cal.pl/forum/viewtopic.php?f=16&t=630&hilit=Utf8ToAnsi&start=45#p3664
http://www.programowanie.cal.pl/forum/viewtopic.php?f=2&t=294&p=1761&hilit=Utf8ToAnsi#p1761
http://www.programowanie.cal.pl/forum/viewtopic.php?f=16&t=527&hilit=Utf8ToAnsi&start=15#p3164

Poza tym nie rozumiem Twojego problemu. Podane strony zawierają polskie znaki diakrytyczne i nie wymagają przekształcania na Ansi. Próbowałem ją wczytywać na różne sposoby i nie dostrzegam problemu. Gdy jednak użyję funkcji Utf8ToAnsi to dopiero wtedy pojawia się problem.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z UTF8 i funkcją Utf8ToAnsi

Nowy postprzez Darek_C++ » niedziela, 11 lipca 2010, 22:24

Cyfrowy Baron napisał(a):Poza tym nie rozumiem Twojego problemu..
Po pobraniu i wczytaniu danych większości stron kodowanych UTF-8 do komponentu TMemo zamiast polskich znaków są krzaki dopiero po przepuszczeniu przez funkcję Utf8ToAnsi pojawiają się czytelne polskie znaki. Takie zachowanie jest dla większości stron kodowanych w UTF-8, ale są też takie których dane przepuszczone przez funkcję Utf8ToAnsi powodują, że funkcja nic nie zwraca.
Teraz Rozumiesz o co mi chodzi ?

Kodowanie UTF-8 w przeciwieństwie do iso-8859-2 ma to do siebie, że polskie znaki widzimy "w oryginale" stąd w podglądzie strony widzimy polskie znaki, a po wczytaniu do AnsiString i TMemo krzaki.

----
W załączniku jest program demo zawierający taki kod:
Kod: Zaznacz cały
String zadanyUrl = Edit1->Text.Trim();
   TIdHTTP *IdHTTP1  = new TIdHTTP(NULL); // z INDY 9

   try
   {
      IdHTTP1->HandleRedirects = true;
      IdHTTP1->ConnectTimeout = 8000;
      IdHTTP1->ReadTimeout = 8000;
      IdHTTP1->AllowCookies = true;
      IdHTTP1->Request->AcceptEncoding = "deflate";
      this->kodHtml = IdHTTP1->Get(zadanyUrl);
      this->kodHttp = IdHTTP1->ResponseText;

      delete IdHTTP1;IdHTTP1 = NULL;

   }
   catch(EIdSocketError &e)
   {
      this->kodHttp = e.Message.Trim();
      ShowMessage(this->kodHttp);
      delete IdHTTP1;   IdHTTP1 = NULL;
      return;
   }
   catch(Exception &exception)
   {
      this->kodHttp = exception.Message;
      ShowMessage(this->kodHttp);
      delete IdHTTP1;
      IdHTTP1 = NULL;
      return;
   }

   Memo1->Text = this->kodHtml;
   Memo2->Text = Utf8ToAnsi(this->kodHtml) ;

Wywołaj przykładowe strony kodowane jako UTF-8 które już nie przejdą przez funkcje Utf8ToAnsi
http://katalog-jarmi.pl/dom,i,wnetrze/p ... aw,s,7305/
http://www.seo.sco.warszawa.pl/e/Wypade ... pracy,1234
http://www.berith.pl/odszkodowanie-doch ... -6523.html
http://www.alarm.yum.pl/e/Ogrodzenia-tymczasowe,3340
http://www.alarm.yum.pl/e/Dom,32
itd..
I inne w UTF-8 które "wchodzą" prawidłowo do Memo2 z polskimi znakami.
http://www.inkwizytor.pl/biznes,i,ekono ... ,wpis,105/
http://www.pomysl.waw.pl/e/Katalog-stron,47
http://pikaczu.pl/finanse/w1155/kalkulator,oc.htm
itd
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
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

Re: Problem z UTF8 i funkcją Utf8ToAnsi

Nowy postprzez Cyfrowy Baron » poniedziałek, 12 lipca 2010, 10:51

[...] dane przepuszczone przez funkcję Utf8ToAnsi powodują, że funkcja nic nie zwraca.


Dzieje się tak dlatego, że źródło strony zawiera na początku znak, którego zmienna AnsiString nie obsłuży.

Sprawdzałem Twój kod, ale u mnie żadna z tych stron nie jest dekodowana prawidłowo, żadna czyli nawet te, które u ciebie "wchodzą prawidłowo".

Stronę: http://www.inkwizytor.pl/biznes,i,ekonomia/kredyty,banki,wpis,105/ udało mi się prawidłowo enkodować takim kodem:

Kod: Zaznacz cały

 String kodHtml
, kodHttp; // typ UnicodeString

 String zadanyUrl = "http://www.inkwizytor.pl/biznes,i,ekonomia/kredyty,banki,wpis,105";

 TStringStream *webPage = new TStringStream(NULL, TEncoding::UTF8, true);

 try
 
{
          IdHTTP1->HandleRedirects = true;
          IdHTTP1->ConnectTimeout = 8000;
          IdHTTP1->ReadTimeout = 8000;
          IdHTTP1->AllowCookies = true;
          IdHTTP1->Request->AcceptEncoding = "deflate";
          IdHTTP1->Get(zadanyUrl, webPage);
          kodHttp = IdHTTP1->ResponseText;

 }
 catch(EIdSocketError &e)
 {
          kodHttp = e.Message.Trim();
          ShowMessage(kodHttp);
          return;
 }
 catch(Exception &exception)
 {
  kodHttp = exception.Message;
  ShowMessage(kodHttp);
  return;
 }

       Memo1->Lines->SetText(webPage->DataString.t_str());
 


Problem jednak w tym, że ze stroną: http://katalog-jarmi.pl/dom,i,wnetrze/paszport,energetyczny,wroclaw,s,7305/ to już wogóle nie działa, co każe sądzić, że ta strona mimo wpisu <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> wcale nie jest kodowana w UTF8. Dalsze testy pokazały jednak, że jest to UTF8. Tylko nie rozumiem tego sposobu kodowania, jedno UTF8 działa inne nie.

Poszukałem i znalazłem takie rozwiązanie:

Kod: Zaznacz cały

 String kodHtml
, kodHttp;

 String zadanyUrl = "http://katalog-jarmi.pl/dom,i,wnetrze/paszport,energetyczny,wroclaw,s,7305/";

 TStringStream *webPage = new TStringStream(NULL, TEncoding::GetEncoding(65001), true); // 65001 - utf-8 - Unicode (UTF-8)

 try
 
{
          IdHTTP1->HandleRedirects = true;
          IdHTTP1->ConnectTimeout = 8000;
          IdHTTP1->ReadTimeout = 8000;
          IdHTTP1->AllowCookies = true;
          IdHTTP1->Request->AcceptEncoding = "deflate";
          //kodHtml = IdHTTP1->Get(zadanyUrl);
          IdHTTP1->Get(zadanyUrl, webPage);
          kodHttp = IdHTTP1->ResponseText;

 }
 catch(EIdSocketError &e)
 {
          kodHttp = e.Message.Trim();
          ShowMessage(kodHttp);
          return;
 }
 catch(Exception &exception)
 {
  kodHttp = exception.Message;
  ShowMessage(kodHttp);
  return;
 }

 Memo1->Lines->SetText(webPage->DataString.t_str());

 /*
   Można też tak:
  
   kodHtml = webPage->DataString;
   Memo1->Lines->SetText(kodHtml.t_str());

   lub tak:

   kodHtml = webPage->DataString;
   Memo1->Lines->Text = kodHtml; // lub po prostu: Memo1->Lines->Text = webPage->DataString;

  a tego sposobu nie polecam:

  kodHtml = webPage->DataString;
  Memo1->Text = kodHtml;
 */
 


Teraz działa to niezależnie od strony, Tobie jednak niewiele z tego przyjdzie gdyż to kod dla środowiska C++Builder 2009-2010 oparty na UnicodeString i wchar_t. Dodam od razu, że aby uzyskać uporządkowany tekst należy zapisywać dane w klasie TStrings a nie w TMemo, czyli: Memo1->Lines->Text a nie Memo1->Text, nie ma to oczywiście wpływu na enkodowanie.

Na tyle na ile to było możliwe przeprowadziłem testy z typem AnsiString i też powinno działać bez problemu:

Kod: Zaznacz cały

 AnsiString kodHtml
, kodHttp;

 String zadanyUrl =
 "http://katalog-jarmi.pl/dom,i,wnetrze/paszport,energetyczny,wroclaw,s,7305/";

 TStringStream *webPage = new TStringStream(NULL, TEncoding::GetEncoding(65001), true);

 try
 
{
          IdHTTP1->HandleRedirects = true;
          IdHTTP1->ConnectTimeout = 8000;
          IdHTTP1->ReadTimeout = 8000;
          IdHTTP1->AllowCookies = true;
          IdHTTP1->Request->AcceptEncoding = "deflate";
          IdHTTP1->Get(zadanyUrl, webPage);
          kodHttp = IdHTTP1->ResponseText;

 }
 catch(EIdSocketError &e)
 {
          kodHttp = e.Message.Trim();
          ShowMessage(kodHttp);
          return;
 }
 catch(Exception &exception)
 {
  kodHttp = exception.Message;
  ShowMessage(kodHttp);
  return;
 }

 kodHtml = webPage->DataString; // u mnie DataString jest typu UnicodeString
 Memo1->Lines->Text = kodHtml; // Text jest typu UnicodeString, ale kodHtml jest typu AnsiString
 


Nie wiem jak to się sprawdzi w Twoim środowisku nieobsługującym UnicodeString.



Code Page Identifiers
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z UTF8 i funkcją Utf8ToAnsi

Nowy postprzez Darek_C++ » poniedziałek, 12 lipca 2010, 12:16

Dziękuję za poświęcony cza, ale w moim wypadku wcale się nie sprawdzi, bo Turbo C++ nie obsługuje takich metod jak TEncoding::UTF8 :(
TStringStream *webPage = new TStringStream(NULL, TEncoding::GetEncoding(65001), true);

[C++ Error] Unit1.cpp(38): E2090 Qualifier 'TEncoding' is not a class or namespace name
[C++ Error] Unit1.cpp(38): E2293 ) expected
[C++ Error] Unit1.cpp(38): E2285 Could not find a match for 'TStringStream::TStringStream(int,undefined)'

----
@Dzieje się tak dlatego, że źródło strony zawiera na początku znak, którego zmienna AnsiString nie obsłuży.
Masz na myśli znak BOM ?
W takim razie może zamiast wczytać do AnsiString wczytać do TMemoryStream i doczytać dane do AnsiString z pominięciem pierwszych znaków tego BOM'a ?
----
Co gorsza chyba nie wszystkie z tek listy wysyłają początkowy znak BOM np
http://www.alarm.yum.pl/e/Ogrodzenia-tymczasowe,3340 też nie mogę go wczytać.
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

Re: Problem z UTF8 i funkcją Utf8ToAnsi

Nowy postprzez Cyfrowy Baron » poniedziałek, 12 lipca 2010, 14:02

Nie wiem jak to jest z tym BOM'em, ale jeżeli to zawsze jest pierwszy znak, to przed wczytaniem go do zmiennej AnsiString można by go obciąć. Co do klasy TEncoding, być może w Turbo C++ występuje ona pod trochę inną nazwą lub inaczej się ją stosuje:

Kod: Zaznacz cały
  TEncoding *Encoding;
  TStringStream *webPage = new TStringStream(NULL, Encoding->GetEncoding(65001), true);


Nie potrafię pomóc nic więcej, gdyż bez enkodowania za pomocą klasy TEncoding te strony po prostu się nie wczytują, a funkcja Utf8ToAnsi po prostu się nie sprawdza.



W takim razie może zamiast wczytać do AnsiString wczytać do TMemoryStream


Sprawdziłem i u mnie działa, ale wymaga użycia funkcji Utf8ToAnsi:

Kod: Zaznacz cały

 AnsiString kodHtml
kodHttp;

 
String zadanyUrl =
 
"http://katalog-jarmi.pl/dom,i,wnetrze/paszport,energetyczny,wroclaw,s,7305/";
// "http://www.inkwizytor.pl/biznes,i,ekonomia/kredyty,banki,wpis,105/";

// TStringStream *webPage = new TStringStream(NULL, TEncoding::GetEncoding(65001), true);

 
TMemoryStream *webPage = new TMemoryStream();
 try
 {
          
IdHTTP1->HandleRedirects true;
          
IdHTTP1->ConnectTimeout 8000;
          
IdHTTP1->ReadTimeout 8000;
          
IdHTTP1->AllowCookies true;
          
IdHTTP1->Request->AcceptEncoding "deflate";
          
IdHTTP1->Get(zadanyUrlwebPage);
          
kodHttp IdHTTP1->ResponseText;

 }
 catch(
EIdSocketError &e)
 {
          
kodHttp e.Message.Trim();
          
ShowMessage(kodHttp);
          return;
 }
 catch(
Exception &exception)
 {
  
kodHttp exception.Message;
  
ShowMessage(kodHttp);
  return;
 }

 
webPage->Seek(0soFromBeginning);
 
int size webPage->Size 2// razy 2 ponieważ zawiera znaki Unicode
 
char *Bufor = new char[size];

 
webPage->Read(Buforsize);

 
kodHtml Utf8ToAnsi(Bufor);

 
Memo1->Lines->Text kodHtml;
 


natrafiłem tutaj jednak na pewien problem, gdyż o ile dla strony http://katalog-jarmi.pl/dom,i,wnetrze/paszport,energetyczny,wroclaw,s,7305/ rozmiar bufora:

Kod: Zaznacz cały
 webPage->Seek(0soFromBeginning);
 
int size webPage->Size 2// razy 2 ponieważ zawiera znaki Unicode
 
char *Bufor = new char[size]; 


jest wystarczający,m to jednak dla strony http://www.inkwizytor.pl/biznes,i,ekonomia/kredyty,banki,wpis,105/ jest za mały, dlatego musiałem go dla tej strony ustawić na sztywno int size = 999999; jak widać ze sporym zapasem.

Jeżeli rozwiążesz problem z rozmiarem bufora, bez definiowania go na sztywno, to podaj to rozwiązanie.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z UTF8 i funkcją Utf8ToAnsi

Nowy postprzez Darek_C++ » wtorek, 13 lipca 2010, 10:56

U mnie podany sposób - kod nie działa, czyli nie wczytuje danych do TMemo po przejściu przez funkcję Utf8ToAnsi :(
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

Re: Problem z UTF8 i funkcją Utf8ToAnsi

Nowy postprzez Cyfrowy Baron » wtorek, 13 lipca 2010, 11:17

Nic nie mogę już na to poradzić. W przykładzie posłużyłem się typami AnsiString i char, i u mnie to działa. Powinieneś sprawdzić, czy zmienna typu char (Bufor) zawiera cokolwiek, oczywiście bez użycia funkcji Ut89ToAnsi. Jeszcze jedno jakiego typu argumentu u Ciebie oczekuje funkcja Utf8ToAnsi?
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z UTF8 i funkcją Utf8ToAnsi

Nowy postprzez Darek_C++ » wtorek, 13 lipca 2010, 12:28

Dane jako takie są pobierane Memo1->Lines->Text = Bufor; ale w tym konkretnym przypadku "nie przechodzą" przez Utf8ToAnsi. Funkcja oczekuje i zwraca typ AnsiString :
Kod: Zaznacz cały
extern PACKAGE AnsiString __fastcall Utf8ToAnsi(const AnsiString S); // z pliku system.hpp
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

Re: Problem z UTF8 i funkcją Utf8ToAnsi

Nowy postprzez Cyfrowy Baron » wtorek, 13 lipca 2010, 13:05

Wiec może powinieneś przekonwertować char na AnsiString:

Kod: Zaznacz cały
kodHtml = Utf8ToAnsi( (AnsiString)Bufor );
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z UTF8 i funkcją Utf8ToAnsi

Nowy postprzez Darek_C++ » wtorek, 13 lipca 2010, 14:08

Też CB nie pomaga kodHtml = Utf8ToAnsi((AnsiString)Bufor);
Chyba nie do zrobienia jest tym sposobem... tylko jaki by tu znaleźć inny nie koniecznie związany z indy, ale np Winsock. Przeglądarka pobiera te strony wiec jakiś sposób powinien być :)
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

Re: Problem z UTF8 i funkcją Utf8ToAnsi

Nowy postprzez Cyfrowy Baron » środa, 14 lipca 2010, 08:48

Przeglądarka pobiera te strony wiec jakiś sposób powinien być :)


Przeglądarka korzysta z innych bibliotek. Jak widzisz ja również korzystam z innych bibliotek i mogę to zadanie rozwiązać na dwa różne sposoby. W Turbo C++ brakuje po prostu odpowiedniej biblioteki, na pewno da się to jakoś zrobić, gdyż biblioteki to też kod bazujący na innych prostszych bibliotekach, które bazują na jeszcze innych itd.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Następna strona

Powrót do Aplikacje sieciowe

Kto przegląda forum

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

cron