kodowanie znaków na stronie a Firefox

0

Witam!

Bawię się programowaniem od kilku lat i pierwszy raz spotykam się z taką sytuacją. Szukałem na necie ale nic ciekawego nie znalazłem więc postanowiłem napisać tutaj.

Na stronie którą stworzyłem mam formularz do wysyłania maili i dziwna sprawa ale jak przechodzę do strony gdzie ma wysyłać dane zmienia mi się formatowanie strony. W miejsce polskich znaków mam krzaczki ale dzieje się tak tylko w Firefoxie. Sprawdzałem moją stronkę w IE i Chromie i wszystko działa OK.

Teraz więcej szczegółów:
Na stronie index.php mam kodowanie UTF-8

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>

w pewnym miejscu strony podgrywają mi się strony jakie wybiorę stosując metodę zmiennej przekazywanej w linku np
?s=strona1

gdzie strona1 to plik PHP

i na jednej stronie "strona1.php" mam prosty formularz

 <form action="?s=strona2" method="post">
                    <table>
                        <tr>
                            <td colspan="2">
                                Dodaj nowej ogłoszenie:
                            </td>
                        </tr>
                        <tr>
                            <td>
                                Kategoria
                            </td>
                            <td>
                                <input type="text" name="kategoria" value="" />
                            </td>
                        </tr>
<tr>
                            <td colspan="2">
                                <center>
                                <input type="submit" value="Dodaj" />
                            </td>
                        </tr>
                    </table>
                </form>

a na stronie strona2.php mam kod który wysyła maila

na początku odbieram wszystkie dane
$id_kategoria=mysql_real_escape_string($_POST['kategoria']);
póżniej jeszcze jedno zapytanie SQL
a później kod wysyłający maila

//wysyłamy maila do nadawcy
                    $adresat = $mail;     // pod ten adres zostanie wysłana
                    $temat = $tytul;
                    $tresc = 'To jest automatyczna wiadomość wysłana z portalu ...'
                            
                        ';
                    $header =     "From: "."automat@..."." \nContent-Type:".
                        ' text/html;charset="UTF-8"'."\nContent-Transfer-Encoding: 8bit";
                    if (@mail($adresat, $temat, $tresc, $header))
                        echo '<br><center>Twój mail został wysłany poprawnie
                           .</center>';
                    else 
                        echo '<b>NIE wysłano maila!</b>';
                    //end

i przy przejściu ze strony1 na stronę2 na całej stronie w miejsce polskich znaków wyświetlają mi się krzaczki. Zaznaczam, że dzieje się tak tylko w Mozilla Firefox w IE i Chromie NIE ??? Proszę o radę już rozkładam ręce.

acha zapomniałbym dodać. Strony piszę w notepad++ i tam mam je sformatowane na kodowanie UTF-8 (bez BOM)

0

ppm->Pokaż informacje o stronie->ogólne
Tam pisze jakie kodowanie ci wykrywa.

0

Upewnij się, że wszystkie te małe pliczki też mają kodowanie UTF-8 (deklaracja jedno, a faktyczne kodowanie to drugie). Jeżeli np. skopiowałeś plik do projektu z jakiegoś źródła - notepad++ mógł Ci zostawić oryginalne kodowanie jednego pliku. Fajnie by było jakbyś to coś wrzucił online - byłoby łatwiej wykryć co jest nie tak.

0

sprawdziłem info o stronie w chwili kiedy zmienia mi kodowanie i rzeczywiście pokazuje że kodowanie jest ISO-8859-2.
OK sprawdzę jeszcze raz kodowanie poszczególnych plików chociaż to robiłem i notepad++ pokazywał UTF-8. Nawet robiłem konwersję jeszcze raz na UTF-8 i pokazuje, że takie jest.
Najdziwniejsze jest to, że dzisiaj w pracy sprawdzałem tą stronę na Mozilli i było OK. Ja już wymiękam :)
adres online
http://www.anonco.pl/test/?s=addad

0

Na Operze pokazuje:
Zadeklarowane: UTF-8
Użyte przez Operę: UTF-8

I śmiga wszystko.

Na FF też widzę śmiga. Rozumiem, że poprawiłeś?

0

heh.. no właśnie to jest najdziwniejsze, że poprawiłem ... niby ale u mnie dalej pokazuje 8859-2 (w domu) na FF a w pracy UTF-8 i wszystko jest OK. Kurcze może ten notepad++ coś miesza. Z jakiego programiku skorzystać żeby mieć pewność, że dobrze przekonwertuje stronkę ?

0

u mnie to wygląda tak
blad.png

0

Firefox -> Web developer -> character encoding -> może tu przypadkowo zmieniłeś.

0

faktycznie tak się dzieje, ale dopiero w odpowiedzi na POST.

// 10 minut później:

odkryłem, patrz: http://www.anonco.pl/test/?s=addad

widzisz? :> coś masz popieprzone i FF się na tym gubi

0

hmm sorki ale nie widzę błędu w tym linku
próbowałem nawet czegoś takiego
<form action="index.php" method="POST">
i też to samo

a jakiego błędu się dopatrzyłeś dzek69 w tym linku ?

zauważyłem jeszcze, że przy przechodzeniu ze strony addad.php (tutaj jest formularz z metodą POST) do addaddb.php zmienia mi się zestaw znaków w firefoxie z UTF-8 na ISO-8859-2 i za Chiny ludowe nie wiem dlaczego :( a jak przestawię w FF z powrotem na UTF-8 jest OK

a wykorzystywał ktoś kiedyś metodę GET przy przekazywaniu danych z formularza ?

0

NOSZ KURDE. Sorry. Tam miał być link do screenshota, ale chyba się coś popieprzyło ze schowkiem :/
@klimba: http://i.imgur.com/Cw7FVeC.png - coś masz spieprzone po stronie serwera i serwujesz nagłówek strony dwa razy

0

to co wskazałeś poprawiłem ale to nie to. Pokombinowałem jeszcze z meta tagami i pomogło :)
wcześniej miałem takie meta tagi

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
...
...
</head>
 

tutaj nastąpiło dużo , dużo ............ dużo prób i błędów :)

i w końcu zmieniłem na

 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<HEAD>
<meta content="text/html; charset=utf-8" http-equiv="Content-type">
<meta content="pl" http-equiv="Content-Language">
...
...
</head>

i w końcu zadziałało

pozdrawiam i dzięki wszystkim za pomoc

1 użytkowników online, w tym zalogowanych: 0, gości: 1