Lupta cu diacriticele (cu PHP şi MySQL)

În seara asta m-am luptat cu diacriticele. Mi-a venit ideea măreaţă să modific unul din site-urile la care lucrez şi să îî adaug diacritice. Site-ul este realizat folosind PHP+MySQL, iar cu convenţiile de folosire a UTF-8 sunt de mult obişnuit să lucrez.

Ei, pe site-ul ăsta dragele de diacritice nu vroiau să se afişeze şi pace.
Baza de date şi tabelele respective erau deja definite cu:

"DEFAULT CHARSET=utf8 COLLATE utf8_general_ci;"

iar pagina avea

Cu toate astea, nici diacriticele scrise direct in fişierul HTML, nici cele preluate din baza de date MySQL nu se afişau corect.

Sesiune de debugging:
Făcut rapid un nou fişier care să afişeze aceeaşi informaţie. Surpriză : diacriticele scrise direct în pagina se afişau corect, cele luate din baza de date nu. După încă 5 minute de scărpinat după ceafa, mi-am adus aminte de excelentul tutorial intitulat “Diacriticele pe web folosind PHP”.

Explicaţii (în caz că mai sunt necesare după ce aţi citit tutorialul):

În pagina buclucaşă diacriticele scrise direct nu se afişau corect pentru că fişierul nu fusese salvat cu encoding UTF-8, în fişierul de test se afişau bine pentru că editorul folosit de mine salveză “by default” fişierele PHP cu acest encoding.

Cât despre textul extras din MySQL , deşi baza de date şi tabela erau setate corect, în clasa de conectare nu era adăugat

mysql_query("SET NAMES utf8");

Leave a Reply

Your email address will not be published. Required fields are marked *