Kodowanie znaków

dział ogólny

Kodowanie znaków

Nowy postprzez Michalos » sobota, 3 stycznia 2009, 18:16

witam, mam pytanko, obrobiłem sobie funkcją Utf8ToAnsi() tekst, po to by mieć polskie znaki, wszystko fajnie tylko pojawił się problem z literką "ó", inne "żł...." wyświetla, to sobie pomyślałem, że przeposzczę jeszcze przez funkcję StringReplace i zmienię to "ó" na "ó" jednak nie działa tzn, jeśli umieszczę to przed funkcją Utf8ToAnsi, nie wyświetla się żaden tekst a jak umieszczę za tą funkcją to ó się wyświetla, ale pozostałe nie, pozostaje napisać własną funkcje konwertującą ? Stworzyć 2 tablice i później wszystko przepuszczać przez StringReplace ? Czy może jest jakieś inne, bardziej profesjonalne wyjście z tej sytuacji?

EDIT///

Napisałem sobie taką funkcję:
Kod: Zaznacz cały
AnsiString TForm2::kodowanie(AnsiString tmp)
{
   String znaki_html[] = {"&Aogonek;","Ć","&Eogonek","&Lstroke;",
   "Ń","Ó","Ś","Ź",
   "&Zdotabove;",
   "&aogonek;","ć","&eogonek","&lstroke;",
   "ń","ó","ś","ź",
   "&zdotabove;"};
   String znaki_pl[] = {"Ą","Ć","Ę","Ł","Ń","Ó","Ś","Ź","Ż","ą","ć","ę","ł","ń","ó","ś","ź","ż"};
   int x;
   for(x=0;x<18;x++)
   {
      tmp = StringReplace(tmp,znaki_html[x],znaki_pl[x],
      TReplaceFlags() << rfReplaceAll);
   }
   return tmp;
}


Ale ona jednak nie spełnia zamierzonego celu :(

Pozdrawiam
Avatar użytkownika
Michalos
Bladawiec
Bladawiec
 
Posty: 35
Dołączył(a): niedziela, 19 października 2008, 11:45
Podziękował : 1
Otrzymał podziękowań: 0
    NieznanyNieznana

Re: Kodowanie znaków

Nowy postprzez wargo » sobota, 3 stycznia 2009, 21:41

A chcesz wykonywać tą zamianę w html-u czy w programie?
Ostatnio edytowano poniedziałek, 5 stycznia 2009, 12:27 przez Cyfrowy Baron, łącznie edytowano 1 raz
Powód: Administrator usunął cytat, gdyż jego stosowanie było nieuzasadnione.
Avatar użytkownika
wargo
Mądrosław
Mądrosław
 
Posty: 389
Dołączył(a): niedziela, 13 lipca 2008, 16:44
Podziękował : 12
Otrzymał podziękowań: 3
System operacyjny: Windows 7
Kompilator: C++ Builder 6 Personal
Gadu Gadu: 6259515
    NieznanyNieznana

Re: Kodowanie znaków

Nowy postprzez Michalos » sobota, 3 stycznia 2009, 22:00

w programie, ale pobieram kod strony (HTML) ;)
Avatar użytkownika
Michalos
Bladawiec
Bladawiec
 
Posty: 35
Dołączył(a): niedziela, 19 października 2008, 11:45
Podziękował : 1
Otrzymał podziękowań: 0
    NieznanyNieznana

Re: Kodowanie znaków

Nowy postprzez Cyfrowy Baron » poniedziałek, 5 stycznia 2009, 12:51

Znaki: "Ą","Ć","Ę","Ł","Ń","Ó","Ś","Ź","Ż","ą","ć","ę","ł","ń","ó","ś","ź","ż" nie wymagają stosowania kodowania UTF, gdyż zmienna typu AnsiString bez problemu je obsługuje.
Nie rozumiem Twojego problemu, jeżeli wczytam źródło pliku HTML do zmiennej AnsiString to otrzymam właściwe źródło strony, z prawidłowo wyświetlonymi wierszami, czyli dla ciągu znaków:

"Ą","Ć","Ę","Ł","Ń","Ó","Ś","Ź","Ż","ą","ć","ę","ł","ń","ó","ś","ź","ż"

otrzymam:

&quot;Ą&quot;,&quot;Ć&quot;,&quot;Ę&quot;,&quot;Ł&quot;,&quot;Ń&quot;,&quot;Ó&quot;,&quot;Ś&quot;,&quot;Ź&quot;,&quot;Ż&quot;,&quot;ą&quot;,&quot;ć&quot;,&quot;ę&quot;,&quot;ł&quot;,&quot;ń&quot;,&quot;ó&quot;,&quot;ś&quot;,&quot;ź&quot;,&quot;ż&quot;

Jak widać poszczególne litery są wyświetlane bez zmiany, ale dla kodowania Windows-1250, natomiast przy zestawie znaków ISO-8859-1 otrzymam:

&quot;Ą&quot;,&quot;Ć&quot;,&quot;Ę&quot;,&quot;Ł&quot;,&quot;Ń&quot;,&quot;Ó&quot;,&quot;Ś&quot;,&quot;Ź&quot;,&quot;Ż&quot;,&quot;ą&quot;,&quot;ć&quot;,&quot;ę&quot;,&quot;ł&quot;,&quot;ń&quot;,&quot;ó&quot;,&quot;ś&quot;,&quot;ź&quot;,&quot;ż&quot;

Dużo więc zależy od tego w jakim zestawie znaków jest kodowana strona i powinieneś opracować kod dekodujący w zależności od użytego systemu kodowania.
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
    NieznanyNieznana


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 8 gości