![]() |
![]() |
![]()
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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 7.10.2025 - 22:31 |