Adaugare diacritice in MySQL

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
cadou
Mesaje:328

Adaugare diacritice in MySQL

In cererea catre baza de date pentru a afisa rezultatele si pentru a adauga in baza de date am si linia de cod:

Cod: Selectaţi tot

mysql_set_charset('utf-8');
In pagina web imi afiseaza cu diacritice rezultatele, dar in baza de date nu adauga diacriticele cum trebuie.
De exemplu:
in formularul de adaugare scriu : am reuşit sa adaug
in pagina de afisare apare cu diacritice
dar in baza de date apare asa: am reuÅŸit mah

MarPlo Mesaje:4343
Salut
In scriptul PHP trebuie sa ai urmatorul cod inainte de adaugare date in mysql:

Cod: Selectaţi tot

header('Content-Type: text/html; charset=utf-8');
Si incearca acest cod pt. setare UTF-8 la conexiunea cu mysql:

Cod: Selectaţi tot

mysql_set_charset("SET character_set_results='utf8', character_set_client='utf8', character_set_connection='utf8', character_set_database='utf8', character_set_server='utf8'");

- Totusi, mysql_set_charset() e anulat in noile versiuni de PHP, si se recomanda PDO sau MySQLi, cu metoda:

Cod: Selectaţi tot

$conn->query('SET character_set_client="utf8",character_set_connection="utf8",character_set_results="utf8";');

cadou Mesaje:328
Multumesc. Am folosit ultima varianta pentru PDO :)

Edit:
Exista vreo diferenta intre utf8 si utf-8 ?
Vad ca ultimul cod merge, dar cateodata da rateuri, cateodata afiseaza in pagina fara diacritice si cu semnul ?

MarPlo Mesaje:4343
Sintaxa pentru setare tip caractere in myql e 'utf8' (fara liniuta).
Instructiunea SQL urmatoare se aplica la toate conexiunile la mysql (inclusiv pentru preluare date).

Cod: Selectaţi tot

$conn->query('SET character_set_client="utf8",character_set_connection="utf8",character_set_results="utf8";');
- Daca in mysql caracterele sunt adaugate corect, problema e undeva la partea de afisare.
Codul php sa aibe acest header():

Cod: Selectaţi tot

header('Content-Type: text/html; charset=utf-8');
Iar in zona <head> din html (pentru HTML5) acest meta:

Cod: Selectaţi tot

<meta charset="utf-8" />

cadou Mesaje:328
Am acel header iar in head am acel meta. In baza de date apare corect cu diacritice ...
am meta de 2 feluri:

Cod: Selectaţi tot

<meta charset="utf-8" />
<meta content="text/html; charset=utf-8" http-equiv="content-type" />
Am incercat pe rand cu ele, am incercat si ambele deodata, aceeasi problema....

MarPlo Mesaje:4343
Problema poate fi de la codul php.
Nu stiu cauza, dar poti afla verificand treptat cu 'echo' in php datele de la preluare din mysql pana la afisare.

- Poti sa incerci sa adaugi urmatorul cod in .htaccess. Nu stiu daca functioneaza, teoretic seteaza charset utf-8 pentru toate fisierele.

Cod: Selectaţi tot

AddDefaultCharset utf-8
Sau pentru anumite tipuri de extensie:

Cod: Selectaţi tot

AddCharset utf-8 .html .css .js .php

Subiecte similare