[Tutorial HTML] Aplicarea corecta a diacriticelor in site
Scris: Vin Feb 14, 2014 8:50 am
Nume Tutorial: Aplicarea corecta a diacriticelor in site
Descriere: Aplicarea corecta a diacriticelor in site
Download:
Autor: Anonim
Sursa (Link-ul oficial): 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.
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)
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)
Descriere: Aplicarea corecta a diacriticelor in site
Download:
Autor: Anonim
Sursa (Link-ul oficial): 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.

Î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)

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)