Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] problem z iconv_set_encoding (ciągle złe kodowanie)
Forum PHP.pl > Forum > Przedszkole
Agape
Żeby móc ustawić na początku session_start(); muszę ustawić kodowanie na np. ansi które nie wyświetla polskich znaków. Jako że na stronie mam polskie znaki próbowałem użyć iconv_set_encoding:
  1. <?php session_start();
  2.        iconv_set_encoding("internal_encoding", "ansi");
  3.        iconv_set_encoding("output_encoding", "UTF-8");
  4.        ob_start("ob_iconv_handler");
  5.        ?>

Niestety nic to nie dało, nadal mam problem z wyświetlaniem polskich znaków (ą). Dobrze przecież mam to napisane więc dlaczego nadal nie ma polskich znaków? W meta nie mam żadnego kodowania (co i tak nie sprawiało różnicy).

Próbowałem ustawić utf-8 bez bom, skrypt oczywiscie dziala ale nie ma większości polskich znaków. Pomoże ktoś?
viking
Pierwszego zdania nie rozumiem. Dlaczego musisz? Ustaw prawidłowy nagłówek (header), zakoduj odpowiednio plik i po sprawie.
Agape
Muszę, ponieważ inne kodowania takie jak np UTF-8 dodają na początku pliku niewidzialne (w edytorze) znaki które powodują że są wysłane jakieś dane przed session_start() co powoduje błąd:
Kod
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /*******/index.php:1) in /*******/index.php on line 1

Przed wysłaniem jakichkolwiek nagłówków nie może być nic wysyłane. Nic nie daje jak ustawie na UTF-8 i przed session_start() wrzucę samo ob_start() i na końcu ob_end_flush(). Pomożecie ? Bawie się z tym masę czasu i nie mogę dojść ;/
Spawnm
Proszę dodać tag do tematu.
viking
Więc znajdź sobie edytor który nie zapisuje BOM.
Agape
sprawdzałem, bez bom nie ma jeszcze większej ilości polskich znaków, co prawda skrypt działa ale tak jak mowie, bez polskich znaków ;/. Próbowałem skopiować dane i zapisać w nowym pliku z nowym kodowaniem ale taki sam efekt
viking
To w takim razie daj adres do strony.

I możesz się zapoznać z artykułem.
Agape
http://t35ty.lua.pl/ strona jest zakodowana w utf-8 bez bom, w ansi tez nie widac wszystkich znaków, tresc body: ę ó ą ś ł ż ź ć ń .
http://t35ty.lua.pl/index.txt jest dokladna kopia pliku glownego na serwerze.

Bym byl wdzieczny za pomoc bo za dlugo juz z tym siedze ;/
viking
Mówiłem ci o nagłówku, prawda? Nie wysyłasz go a domyślnie otwiera się w iso-8859-2.
Agape
Nie rozumiem trochę, kodowanie pliku mam w utf-8 bez bom i teraz wysyłam w nagłówku PHP kodowanie utf-8:
  1. <?php    
  2.    header('Content-type: text/html; charset=UTF-8');
  3.    session_start();
  4. ?>
  5.  
  6. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  7. <html xmlns="http://www.w3.org/1999/xhtml">
  8. <meta name="Robots" content="none" />
  9.  
  10. <body>
  11.  
  12. ę ó ą ś ł ż ź ć ń
  13.  
  14. </body></html>


i efekt jest jeszcze gorszy: http://t35ty.lua.pl/

Jak ja to powinienem zrobić ? Dając kodowanie utf-8 w meta i tak nie daje to pożądanego efektu
viking
Tylko że teraz zapisałeś plik w windows-1250 (notatnik?). Kod zostaw jak jest tylko użyj prawidłowego kodowania dla samego pliku.
Agape
Dzięki Ci bardzo za zainteresowanie tematem. Używam 2 edytorów które są konkretnie rozbudowane jednak okazało się, że mimo że ustawiałem tam odpowiednie kodowanie zapisywało plik źle. Ściągnąłem KED'a i odrazu po otwarciu pliku który pokazywałem, KED poinformował mnie, że znaki są błędnie zakodowane. Niestety w tym programie nie ma asci to wziąłem UTF-8, dodatkowo trzeba było ustawić w nagłówku albo mecie kodowanie utf-8 i wszystko działa. Zarówno session_start() (wcale nie trzeba było kodowanie innego niż utf-8 tak jak pisali prawie wszędzie) jak i polskie litery.

Dzięki bardzo, strasznie długo nad tym siedziałem
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.