Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> problem z konwersja utf-8 do iso-8859-2, funkcja mb_convert_encoding nie konwertuje z utf-8 do iso-8859-2
lucaa44
post
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 1
Dołączył: 26.05.2007

Ostrzeżenie: (0%)
-----


Witam,
mam problem z konwersja ciagu z utf-8 do iso-8859-2. problem pojawial sie i byl rozwiazywany na tym forum juz nieraz, niestety dotychczasowe rozwiazania ktore przejrzalem niewiele mi pomogly

mam strone html/php ktora deklaruje kodowanie iso-8859-2 poprzez znacznik html <meta>. W przegladarce, opera 11, mam ustawiony wybor kodowania automatyczny. Strona jak wspomnialem generuje tresc dynamiczna, pobiera dane z pliku(ciag tekstowy) za pomoca metody $DOM->loadHTMLFile(), przetwarza je za pomoca kilku innych metod i jednoczesnie wyswietla(przez echo()) i wkleja do nowego pliku. Jako ze strona ma w <meta> iso dane powinny sie wyswietlac z takim kodowaniem, bez wzgledu na kodowanie wejsciowe.

Czesc przetworzonych danych wyswietla sie prawidlowo w iso mimo ze kodowanie wejsciowe to utf-8, nawet bez uzycia iconv() czy mb_convert_encoding(). Wiem ze kodowanie wejsciowe to wlasnie utf-8, bo przed samym wyswietleniem wstawilem kod z mb_detect_encoding().

Niestety czesc ktora jest przetwarzana pozniej i wczytywana z innego pliku(caly plik w postaci ciagu) wyswietla sie z 'krzakami' - (np. r?(IMG:style_emoticons/default/questionmark.gif) ?ni się - różni się). Zastosowanie iconv() czy mb_convert_encoding() nic nie daje mimo podanego kodowania wejsciowego, pobranego przy uzyciu detect_encoding(). Dane z pliku sa rowniez pobierane za pomoca metody $DOM->loadHTMLFile(), ale jest tez metoda ktora obcina puste znaki na koncu i na poczatku tego pliku, ktore powodowaly jakies bledy. NIe wiem czy ta ostatnia metoda nie namieszala na tyle ze mb_convert_encoding() ma problem z konwersja. Mimo tych ciec mb_detect_encoding() wykrywa poprawnie utf-8. Dodam jeszcze ze te same krzaki pojawiaja sie na ekranie w przegladarce jak i po otwarciu pliku wynikowego w edytorze. oto fragment kodu - wykrywanie kodowania, konwersja, zapisanie wyniku do pliku testowego, wyswietlenie wyniku:
Kod
              // wykryj kodowanie
    $encoding = $page->detect_encoding( $pagestr, __LINE__ ); // moja funkcja oparta o mb_detect_encoding()
    
    $list_encodings_arr = mb_list_encodings();
    sort($list_encodings_arr);
        
    $to_encoding = $list_encodings_arr[24]; // iso-8859-2
    echo 'Kodowanie docelowe: '.$to_encoding.'<br /><br />';
              
              // konwertuj
              $pagestr = mb_convert_encoding($pagestr, $to_encoding, $encoding );
        
    // zapisz przekonwertowany ciag do pliku
    file_put_contents( 'html_output.txt', $pagestr );
              
              // wyswietl ciag i zatrzymaj
              die( htmlspecialchars($pagestr) );



Z tego co sprawdzilem wszystkie pliki sa zapisane w iso-8859-2, chyba ze ktorys przeoczylem.
Jak dam rade dodam linki do pliku wejsciowego ktory jest poddawany obrobce i sprawia problemy i pliku wynikowego.
Czesc pliku wynikowego:
Kod
<html><head><title>Instalacja Code Igniter na serwerach w sieci</title><meta content="Instalacja CI na zwyk?‚ych serwerach dostÄ™pnych w sieci niewiele r?(IMG:style_emoticons/default/questionmark.gif) ?ni siÄ™ od instalacji na naszym lokalnym serwerze."


co zrobic z ta druga czescia kodu zeby wyswietlala sie prawidlowo, da sie jakos zmusic mb_convert_encoding by przekonwertowal ciag?

jest ktos w stanie pomoc?

dodaje linki:

plik wejsciowy -
http://chomikuj.pl/masgeo44/Dokumenty/inst...1766457503.html

plik wyjsciowy zawierajacy skonwertowany ciag -
http://chomikuj.pl/masgeo44/Dokumenty/html...,1766457501.txt

pozdrawiam

Ten post edytował lucaa44 1.07.2012, 00:09:04
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 7.10.2025 - 22:31