[Tutorial HTML] Aplicarea corecta a diacriticelor in site

#1
Nume Tutorial: Aplicarea corecta a diacriticelor in site
Descriere: Aplicarea corecta a diacriticelor in site
Download:
Autor: Anonim
Sursa (Link-ul oficial):
tutorialeonline
Propria parere: Folositor.
Tutorialul:

Deseori întâlnesc pe diferite forum-uri de programare întrebări de genul "nu mi se văd diacriticele" sau "nu se salvează corect diacriticele în baza de date".

În continuare o să încerc să vă lămuresc care sunt pașii ce trebuiesc făcuți pentru a nu avea astfel de probleme când utilizati diacritice în site.

Sunt 5 pași de care trebuie să țineți cont când lucrați cu diacritice și anume encoding-ul scriptului, encoding-ul câmpurilor din baza de date, encoding-ul documentului html și tipul de encoding prin care se transmit datele de la script la baza de date și de la script la browser.
1) Tipul de caractere al scriptului php

Multe editoare nu salvează default scriptul ca UTF-8 ci encodat ca ANSI iar asta face ca diacriticele să nu fie interpretate corect nefăcând parte din standardul ansi. Pentru a rezolva problema deschideți scriptul php în editorul Notepad (cel cu care vine windowsul) și dați Save AS. În fereastra care apare la această comandă jos o să vedeți 2 rânduri. În primul rând vă cere calea și numele sub care va fi salvat fișierul curent iar în al doilea rând vă cere să specificați tipul de encoding al fișierului. Selectați tipul UTF-8 și dați save. Problema rezolvată. Din acest moment scriptul poate să prelucreze diacriticele corect.
Imagine
2) Tipul de encodare al câmpurilor din baza de date

În baza de date textele sunt salvate în anumite câmpuri din tabel. Acele câmpuri au de obicei setat tipul vachar, char, text sau ceva similar. Acest tip de date mai vine cu o setare ce se referă la encoding. În phpmyadmin dacă ne uităm la acel câmp o să vedem că default vine setat cu tipul utf8_swedish_ci iar nouă ne trebuie general (tipul general permite o gamă mai largă de caracere nu doar pe cele românești)
Imagine
După ce am efectuat și această setare, în acel câmp se vor putea salva diacriticele în mod corect.
3) Transferul datelor dintre scriptul php și baza de date

Următorul pas care trebuie făcut este setarea modului în care vor fi trimise și primite informațiile din baza de date. Pentru asta există 2 opțiuni și anume:

Modul recomandat (funcționeaza de la php5 în sus)

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

Modul nerecomandat (funcționează de la php4 în sus dar pot apărea probleme în anumite situații)

mysql_connect(parametrii de conectare);
mysql_select_db(numele bazei de date);
mysql_query("set names 'utf8' ");

4) Transferul datelor dintre scriptul php și browser

Pentru a trimite datele la browser fără a fi alterate în timpul transferului trebuie să setăm un header prin care specificăm encoding-ul ca mai jos:

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

Desigur, precum se știe, toate headerele trebuie trimise primele la browser înaintea oricărui text, deci în scriptul php asta ar trebui să fie printre primele linii (înaintea codului html)
5) Afișarea textului cu diacritice în pagina html

Ultimul pas care mai trebuie făcut este setarea unui metatag în documentul html pentru a specifica browserului ca toate textele din acea pagină trebuie interpretate cu encoding-ul UTF8

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

Cred că știți și voi că tagurile meta se pun în partea de sus a documentului între tagurile head (înainte de body)

Asta este tot, dacă efectuați toți pași de mai sus corect este imposibil să mai aveți probleme cu diacriticele. (bine în realitate totul e posibil, unele funcții php care prelucrează stringuri trebuie să le specificați tipul de encoding ca să funcționeze corect dar asta deja e altă discuție care nu își are locul aici)

Înapoi la “Tutoriale HTML”

Cine este conectat

Utilizatori răsfoind acest forum: Niciun utilizator înregistrat și 1 vizitator