Lupta cu diacriticele (cu PHP şi MySQL)

26 Mar, 2009   Adăugat de in php, programare | 
Taguri : , , , ,

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

1
"DEFAULT CHARSET=utf8 COLLATE utf8_general_ci;"

iar pagina avea

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

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

1
mysql_query("SET NAMES utf8");

6 Responses so far | Have Your Say!

  1. Catalina  |  Martie 27th, 2009 at 1:04 #

    merci, nici nu banuiesti de ce mare folos mi-au fost informatiile de aici, in special mysql_query(“SET NAMES utf8″). Am pierdut juma’ de zi sa-mi dau seama ce are de nu vrea sa recunoasca diacriticele importate din baza de date….

    Catalina - Gravatar
  2. noru  |  Martie 27th, 2009 at 11:40 #

    @Catalina : Ma bucur ca informatia a fost utila ! :smile:

    noru - Gravatar
  3. Caractere româneşti în HTML - blog.noru.ro - All you ever wanted  |  Martie 29th, 2009 at 12:56 #

    [...] tot povesteam de curând cum m-am luptat cu diacriticele, m-am gândit să pun aici următorul tabel cu diacriticele româneşti şi alte caractere folosite [...]

    Caractere româneşti în HTML – blog.noru.ro – All you ever wanted - Gravatar
  4. IGORREW  |  Noiembrie 27th, 2009 at 11:16 #

    salut mai norule!
    Uite ce te intreb, cum as putea sa introduc caractere romanesti in tastatura engleza, am un program rus ce nu are unicode, deaceia nu vede caracterele romanesti, pe net am gasit doar http://www.fonturi.ro/ dintre care merge doar intregul font Helvetica RO, adica cu tastatura engleza programul meu reda caracterele romanesti, dar sunt destul de caragioase, cum as putea sa le bag caracterele romanesti in fonturile arial, times new roman, georgia, doar in word ele apar inseamna ca sunt inscrise, doar trebuie de scimbat pe tastatura engleza :?: cum as face-o

    IGORREW - Gravatar
  5. grig  |  Aprilie 8th, 2010 at 13:24 #

    Excelent.

    grig - Gravatar
  6. razvan  |  Februarie 22nd, 2011 at 9:37 #

    M-ai scutit de batai de cap pentru ziua de azi! Mersi. Ce-mi lipsea era mysql_query("SET NAMES utf8").

    razvan - Gravatar

Leave a Feedback

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">

 

61 queries. 0.383 seconds.