Afisarea corecta a diacriticelor pe site

Configurare noua (How To)

Situatie

Pentru ca diacriticele sa fie afisate corect pe site trebuie sa se tina cont de encoding-ul script-ului, a campurilor din baza de date, a documentului html, tipul de encoding prin care se transmit datele de la script la baza de date si de la script la browser.

Solutie

Pasi de urmat

Tipul de caractere al script-ului php

Multe editoare nu salveaza default scriptul ca UTF-8 ci encodat ca ANSI iar asta face ca diacriticele sa nu fie interpretate corect, nefacand parte din standardul ansi. Pentru a rezolva problema deschideti script-ul php in editorul Notepad si dati Save AS.  Selectati UTF-8 ca tipul de encoding al fisierului si salvati. Din acest moment script-ul poate sa prelucreze diacriticele corect.

diacritice1

Tipul de encodare al campurilor din baza de date

In baza de date textele sunt salvate in anumite campuri din tabel. Acele campuri au de obicei setat tipul vachar, char, text sau ceva similar. Acest tip de date mai vine cu o setare ce se refera la encoding, default fiind tipul utf8_swedish_ci; modificati pentru general

diacritice2

Transferul datelor dintre script-ul php si baza de date

Urmatorul pas care trebuie facut este setarea modului in care vor fi trimise si primite informatiile din baza de date.Modul recomandat (functioneaza de la php5 in sus):

mysql_connect(parametrii de conectare);
mysql_select_db(numele bazei de date);
mysql_set_charset('utf8'); // stabilim comunicarea cu serverul sa se faca cu encoding-ul pentru setul de caractere utf8

Transferul datelor dintre scriptul php si browser

Pentru a trimite datele la browser fara a fi alterate in timpul transferului trebuie sa setam un header prin care specificam encoding-ul ca mai jos:

header("Content-type: text/html; charset=utf-8");

Desigur, precum se stie, toate headerele trebuie trimise primele la browser inaintea oricarui text, deci in scriptul php asta ar trebui sa fie printre primele linii (inaintea codului html)

Afisarea textului cu diacritice in pagina html

Ultimul pas care mai trebuie facut este setarea unui metatag in documentul html pentru a specifica browser-ului ca toate textele din acea pagina trebuie interpretate cu encoding-ul UTF8

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

Tip solutie

Permanent

Voteaza

(34 din 76 persoane apreciaza acest articol)

Despre Autor

Leave A Comment?