Autor Zpráva
radozaj
Profil
Ahoj,
už dosť dlho ma trápi jeden problém na mojich php stránkach. Zrejme ide o problém s kódovaním, ale neviem si rady. Píšem, že php, pretože ak použijem len HTML, tak mi to nerobí. Totižto, ak napíšem php stránku napr. pokus.php a vyzerá takto:

<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
</HEAD>
<BODY>
Tak už to bývá, když se člověk pustí do křížiku s jazykem. 1234567890
<?
echo $_SERVER['HTTP_ACCEPT_CHARSET'];
?>
</BODY>
</HTML>

V hocijakom prehliadači napr. Firefox, Opera, IE5, IE6 alebo v IE7 to BUG-ne tak, že napíše:

Tak u? to b�� kdy? se ?lov?k pust�o k?�ku s jazykem. 1234567890

Tento BUG sa ale hneď opraví, ak stlačím F5 (refresh). No však keď vypnem prehliadač a neskôr ho znovu otvorím tú stránku, tak zase to BUG-ne a ja som donútený stlačiť F5.
Vážne si neviem rady, pretože kódovanie používam rovnaké, ako je na servry, tak aj na stránke a tak aj v ňom to ukladám (textový editor). Ale doteraz žiadna HTML stránka na rovnakom servery a rovnako kódovaná to ešte neurobila.
Do ukážkovej stránky som dal aj zobraziť globálnu premennú na Obsah hlavičky Accept-Charset, avšak to nezobrazuje nič a mala by zobrazovať utf-8.

Tu je tá stránka, ale nie vždy to BUG-ne pokus.php

Prosím, poraďte mi.
Str4wberry
Profil
a co tam dát tohle:

<meta http-equiv='Content-Language' content='cs' />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

anebo nastavit kódování přímo toho dokumentu.
radozaj
Profil
prepísal som kód na:

<HTML>
<HEAD>
<meta http-equiv='Content-Language' content='cs' />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</HEAD>
<BODY>
Tak už to bývá, když se člověk pustí do křížiku s jazykem. 1234567890
<?
echo $_SERVER['HTTP_ACCEPT_CHARSET'];
?>
</BODY>
</HTML>

A bezo zmeny, stale rovnake problemy, rovnake BUG-y a stale ta globalna premenna nema nic v sebe.
krteczek
Profil
radozaj: myslím že sis spletl pojem s průjmem....
kódování dokumentu záleží na znakové sadě v které byl vytvořen/uložen, takže pokud je to ve windows-1250 tak i <meta http-equiv="content-type" content="text/html; charset=windows-1250">
tohle s accept language nemá nic společného...
krteczek
radozaj
Profil
Tak kde je teda problém?
radozaj
Profil
Nemoze byt problem u servera?
rommy
Profil *
já to odsud vidím normálně
radozaj
Profil
ono to neurobí vždy, ale iba niekedy... a občas to BUG-ne aj doma, v škole, u kamoša...
rommy
Profil *
máš pravdu, někdy se to opravdu zobrazí špatně...já bohužel poradit neumím, ale snad se někdo s radou najde
krteczek
Profil
skus na začátek stránky připsat hlavičku:
<?php header("content-type: text/html; charset=windows-1250");?>
je to serverová hlavička snad to už dělat nebude, vypadá to, jako by občas server posílal jiné kodování (to přebije kodování v html => server je silnější)
krteczek
radozaj
Profil
Tak ma napadlo, že či to nemôže byť tým, že <? ... ?> dávam iba kde potrebujem a nie hneď od začiatku. Skúsil som to dať takto:

<?php
echo "<HTML>";
echo "<HEAD>";
echo "<meta http-equiv='Content-Language' content='cs' />";
echo "<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />";
echo "</HEAD>";
echo "<BODY>";
echo "Tak už to bývá, když se člověk pustí do křížiku s jazykem. 1234567890";
echo "</BODY>";
echo "</HTML>";
?>

a zatiaľ mi to ne-BUG-lo. Pomohlo to? Alebo to BUG-ne, keď nebudem čakať...
radozaj
Profil
Tak a zase to BUG-lo, takže som to opravil a teraz:

<?php
header("content-type: text/html; charset=utf-8");
echo "<HTML> ";
echo "<HEAD>";
echo "<meta http-equiv='Content-Language' content='cs' />";
echo "<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />";
echo "</HEAD>";
echo "<BODY>";
echo "Tak už to bývá, když se člověk pustí do křížiku s jazykem. 1234567890";
echo "</BODY>";
echo "</HTML>";
?>

no som zvedavý...
radozaj
Profil
neúspech, zase to robí. UŽ si neviem rady. Ale zistil som, niečo nové. Na tom istom servery mám aj CMsimple, blog, phpbb a tie to nerobia, takže je to riešiteľný problém. Ale ako na to?
radozaj
Profil
A ďalšia nová vec: keď mi to BUG-lo, dal som vo firefoxe Nástroje / Informácie o stránke. Potom som sa na to info pozrel, keď to ne-BUG-lo a všetko bolo rovnaké až na veľkosť, ktorá zrazu vzrástla zo záhadných príčin (to BUG-nuté malo menej). Pomôže vám to zistiť v čom len môže byť chyba? Ja si už neviem rady.
unit353
Profil *
"BUG-lo" to je mi teda výraz.

otevri v notepadu ten php soubor, dej ulozit-jako a zvol misto ANSI kodovani -> UTF8, pravděpodobně ti to vyhodí hlášku a poškodí současné písmenka. Budeš muset písmenka opravit ale bude to pak v UTF8.

Pokud to v notepadu nepůjde, tak to vyzkousejt ulozit jako UTF8 v PSPadu.
radozaj
Profil
Bol by som rád, keby problém bol v tom, ale nie je, pretože to už dlhšie ukladávam v UTF-8. Teda uložené v UTF-8, v hlavičke mám UTF-8, aj to číta v UTF-8 a BUG-uje (vážne pekný výraz) to stále. Aj keď som úlne zmenil kódovanie, robilo to tiež. Dnes ešte vyskúšam nainštalovať si doma php, mysql a apach server a som zvedavý, či to bude robiť aj po zmene serveru. Potom dám vedieť.
Hooonza
Profil *
radozaj

Kód:

<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
</HEAD>
<BODY>
Tak už to bývá, když se člověk pustí do křížiku s jazykem. 1234567890
</BODY>
</HTML>

Zkusil jsem toto:
1. PSPad/Soubor/Otevřít... (soubor viz výše)
2. PSPad/Formát/UTF-8 (zaškrtnout)
3. PSPad/Uložit

A browser teď čte větu normálně s diakritikou.
radozaj
Profil
Hooonza
Áno, ale to je HTML a to mi ide i na servery v pohode. Problém sa vyskytne až keď i z toho istého HTML spravím php už len tak, že zmením príponu na pokus.php

all
No tak som ten server doma rozbehol (použil som EasyPHP 8) skúsil som dať problémovú php stránku do prehliadaču a v pohode. Takže bude problém u serveru poskytovateľa webu. Však ja používam inet. Stretol sa niekto s problémami s ním?

pokus.php
<?php
echo "<HTML> ";
echo "<HEAD>";
echo "<meta http-equiv='Content-Language' content='cs' />";
echo "<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />";
echo "</HEAD>";
echo "<BODY>";
echo "Tak už to bývá, když se člověk pustí do křížiku s jazykem. 1234567890";
echo "</BODY>";
echo "</HTML>";
?>
Toto téma je uzamčeno. Odpověď nelze zaslat.

0