ugrás a tartalomhoz

ÉKEZETEK miért nem működnek rendesen sok böngésző esetén?

acoliver · 2014. Dec. 9. (K), 10.03
Sziasztok!

Segítséget szeretnék kérni az oldalamhoz.
Bevezető:
Megcsináltam az első oldalam. Az elkészítéséhez sok fórumot végignéztem, könyveket olvastam. Mégis jelentkezett az a probléma, hogy sok böngésző az ékezeteket nem kezeli rendesen.
Előkészületeim alapján egy egyszerű honlaphoz három dologra kell oda figyelni:
I.
valami.php fájlt utf-8 kódolással írjam,
II.
<meta charset="UTF-8">
legyen a html kódban,
III.
header('Content-type: text/html; charset=utf-8');
header() fgv-nél is ugyan így járok el. Erről tudom, hogy még akkor kell meghívni mielőtt bármi is történne a honlapunkkal.

A következő a kód, amit használok az oldalhoz
index.php

<?php  
header('Content-type: text/html; charset=utf-8');  
require 'Side.class.php';  
    $index = new Side();   
    $index->show(  );  
?>
<?php  
class Side {  
    public $title = "Oldal";  
    public $keyword = "ékezetes betűk";   
      
    public function showMeta(){  
        echo "  
        <meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\" >  
        <meta name=\"keywords\" content=\"" .$this->keyword. "\" >  
        <meta name=\"language\" content=\"HU\" >";   
    }  
    public function showBody(){  
        echo    "  
            <header >  
                <p>Ide a honlapon megjelenítendő szöveg...</p>  
                <p>í é á ű ő ú ó ü ö stb.</p>  
            </header>";  
    }  
    public function show(){  
        echo "<!DOCTYPE html><html><head>";   
        $this->showMeta();  
        echo "<head><body>";   
        $this->showBody();  
        echo "</body></html>";   
    }  
}  
?>  
Biztosan látjátok, hogy kezdő honlap készítő vagyok, de szorgalmammal nincs baj.
Kérlek segítsetek tanácsokkal ellátni!
 
1

</head>

gabesz666 · 2014. Dec. 9. (K), 11.16
Első körben a show metódusban a nyitó <head> tag helyett egy lezáró </head> taggel kéne próbálkozni. Ezen kívül nekem jónak tűnik első ránézésre, azon kívül, hogy a <meta http-equiv... helyett manapság már illik a <meta charset="UTF-8"> taget és attribútumot használni.
2

php.ini

Pepita · 2014. Dec. 9. (K), 11.46
Default character set?

Gyanus, hogy nem utf8-al ir a php-d a kimenetre.
Keress a php.ini-ben direktivat.
Vagy irass ki egy php_info-t.
6

Core PHP

acoliver · 2014. Dec. 9. (K), 21.02
Core
PHP Version 5.4.35-0+deb7u2

Apache/2.2.22 (Debian)

iconv
iconv.input_encoding ISO-8859-1 ISO-8859-1
iconv.internal_encoding ISO-8859-1 ISO-8859-1
iconv.output_encoding ISO-8859-1 ISO-8859-1

Ezeket találtam phpinfo();-ban.
Sajnos nem 5.6 PHP verzió.
Ezeket kell átállítani utf-8ra, úgy hogy kiveszem a pontosvesszőt?

Eddigi olvasataim alapjána header()-fgv ad utasítást a böngészőnek?

Köszönöm az eddigi hozzászólásokat!
8

iconv?

Pepita · 2014. Dec. 10. (Sze), 13.19
Nem hasznalod az idezett kodban.

Keress a php doksiban default_charset-et v vmi hasonlo. Igy telorol most nem talalom.

A php verzio nem szamit karakterkodolasban.

Szerk.:
php.ini-ben van ilyen sor?
default_charset = "utf-8"

Elvileg ez ugyanaz, mint ha header fv-el küldöd ki, de próbáld meg.
3

A php fájl milyen

spapp · 2014. Dec. 9. (K), 15.42
A php fájl milyen karakterkódolással van elmentve?
5

utf-8 BOM nélküli kódolás

acoliver · 2014. Dec. 9. (K), 18.11
utf-8 BOM nélküli kódolás
4

webszerver

carstepPCE · 2014. Dec. 9. (K), 15.51
esetleg érdemes megnézni, hogy a webszervered támogat e utf-8-t. Mostanság ez nem jelent gondot, de régen még előfordultak érdekes esetek
7

?>

T.G · 2014. Dec. 10. (Sze), 08.17
Sok mindent leírtál a témanyitóban, ám néhány fontos infót nem. Melyik böngészőben hibás, és melyikben nem? Illetve, azt látjuk, hogy milyen header-t szeretnél küldeni, de azt nem, hogy mit is küldesz valójában? Pl. Chrome böngészőben így nézheted meg: F12, Network, kérés kiválasztás, Headers \ Response Headers

Lassan már minden tipp elhangzott, ami ilyenkor felmerülhet, én még mondjuk annyival egészíteném, hogy a PHP fájlok végéről leszedhetnéd a ?> lezárást. Mert ha valahol olyan fájlt húzol be, ahol a lezárás után van még néhány üres sor, akkor az is bekavarhat. Igaz, jelen esetben nem kellene ennek sem zavarnia, de jobb ezt általános szabályként betartani.
9

Azt hiszem működik

acoliver · 2014. Dec. 10. (Sze), 14.45
Köszönöm a segítséget mindenkitől!
5 gépen az összes böngészőben megnéztem és mindegyiken működött jól! :)
Ez nagy megkönnyebbülés számomra,mert nagyon elvette a kedvem és lendületem.
10

Mi okozta a bajt?

Hidvégi Gábor · 2014. Dec. 10. (Sze), 15.23
Mi okozta a bajt?
11

Mindent úgy csináltam, ahogy

acoliver · 2014. Dec. 11. (Cs), 13.05
Mindent úgy csináltam, ahogy mondtatok, és így jó lett.
Szerencsére a php.ini fájlban nem kellett változtassak.
Erre a meta tag-re gyanakszom:
<meta charset="utf-8" >
12

A gyanakvás kevés. Egy

Hidvégi Gábor · 2014. Dec. 11. (Cs), 13.34
A gyanakvás kevés. Egy alapértelmezetten konfigurált webszervernél elég a php fájlt utf8-cal menteni, valamint mellé a megfelelő meta tag-et, másra nincs szükség. Célszerű lenne kideríteni, hogy nálad pontosan mi okozza a problémát.
15

Egyet értek Gáborral! A

spapp · 2014. Dec. 12. (P), 10.09
Egyet értek Gáborral!
A gyanakvás kevés!

Egy hiba kapcsán nem elég megelégedni azzal, hogy már megoldódott!
Pontosan tudni kell az okát, mert így lehet belőle tanulni és nem elkövetni minden alkalommal!

Egyébként kevés esélyt adok annak, hogy a meta tag okozta a problémát, mert a kérdésben azt írod, hogy kiküldted ezt a header-t: header('Content-type: text/html; charset=utf-8'); Ez esetben viszont a kiküldött header szerint fog eljárni a böngésző.

Egyébként ha van adatbázis kapcsolat, akkor az abban tárolt adatok és a kapcsolat karakterkódolására is oda kell figyelni. Bár azt nem említetted, hogy lenne...
13

sztem szimplán cache..

szabo.b.gabor · 2014. Dec. 11. (Cs), 16.07
sztem szimplán cache..
14

:)

Pepita · 2014. Dec. 11. (Cs), 19.08
Ja, simán lehet...
Nem is gondoltuk - eddig.