utf-8 in php

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
Avatar utilizator
steell
Mesaje:190

utf-8 in php

salut marplo.
Dupa ce sciu o pagina .php, atunci cand o salvez trebuie sa mai selectez si optiunea encoding pe utf-8 ?
Stiu ca asta se face doar la cele cu extensia .html .
Nu e suficient daca am in pagina, la <head> acest meta-tag?

Cod: Selectaţi tot

<META CONTENT="text/html; charset=UTF-8" http-equiv=Content-Type />

MarPlo Mesaje:4343
Salut
Daca folosesti UTF-8, e recomandat sa salvezi si acel fisier tot cu encoding UTF-8 (indiferent daca e .html, .php, .txt).
In plus, in script-ul PHP, inainte de afisarea datelor trebuie adaugat acest header():

Cod: Selectaţi tot

if(!headers_sent()) header('Content-type: text/html; charset=utf-8');

steell Mesaje:190
Am salvat pagina index.php cu optiunea utf-8 insa cand intru in ea imi arata
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\wamp\www\index.php:1) in C:\wamp\www\index.php on line 2
fisierul index este asa:

Cod: Selectaţi tot

<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ro">
<head>
<META CONTENT="text/html; charset=UTF-8" http-equiv=Content-Type />
si alte META...
</head>
<body>
...
</body>
</html>
Nu este nimic inainte de session_start nici macar un spatiu.
Si unde anume in pagina trebuie sa pun aceasta:?
if(!headers_sent()) header('Content-type: text/html; charset=utf-8');
Cand pagina era salvata in mod normal ANSI nu aparea acel avertisment.
Este vreo pagina despre headere in tutorialul de html sau php de pe site??ca nu stiu sa le folosesc?

MarPlo Mesaje:4343
Poate este spatiu inainte de <?php .
Daca nu, eroarea aceasta poate sa apara din cauza editorului de tex folosit pentru scriere in fisiere PHP.
Daca folosesti editor precum Dream Waver, sau direct pe host, pe cel din CPanel, acestea, daca nu sunt configurate corect, adauga pe prima linie caractere invizibile, si astfel da eroarea specificata mai sus.
Recomand sa editezi fisierele cu un editor simplu de text, de exemplu Notepad++.
Daca folosesti Notepad++, seteaza la meniul Encoding sa fie: "Encode in UTF-8 without BOM".

Codul cu header() se adauga oriunde dupa session_start() si inainte de afisarea (sau trimiterea spre afisare, de exemplu cu "echo") vreunui text.
- Despre functia header() gasesti in manualul PHP, la adresa: http://www.php.net/manual/en/function.header.php .
O lista cu argumente /optiuni pt functia header() e la adresa: http://en.wikipedia.org/wiki/List_of_HTTP_headers .