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