Seturi de caractere in MySQL

Aveţi probleme cu serverul Apache, cu interpretorul de PHP sau cu baza de date MySQL? Aici găsiţi informaţii despre servere free unde se poate instala forumul phpBB.
ivalentin
Nou venit
Mesaje: 3
Membru din: 12-Oct-2005, 13:25:07
Ext: Nu
Server: Windows
Nivel phpBB: Mediu
Nivel php: Mediu
Localitate: Ploiesti, Romania
Contact:

Seturi de caractere in MySQL

Mesaj de ivalentin »

Am upgradat recent serverul de linux al firmei la Fedora Core 4, care include serverul MySQL 4.1.1. Problema este legata de noile functii de management al seturilor de caractere introduse de acesta. Am definit setul de caractere standard pentru server si bazele de date ca fiind 'latin2' (default-character-set=latin2). Diacriticele nu apar insa bine daca sunt accesate de pe un calculator care foloseste un sistem de operare cu fonturi implicite unicode (utf-8) - de ex. Windows XP. Din cate am inteles din documentatie, serverul MySQL detecteaza automat setul de caractere al clientului si face automat o conversie a caracterelor. Diacriticele nu sunt afisate insa bine in urma acestei conversii (apar '?').

Pe un calculator de test, am reusit sa rezolv partial problema adaugand linia

Cod: Selectaţi tot

mysql_query("SET CHARACTER SET latin2");
in fisierul mysql4.php, dupa:

Cod: Selectaţi tot

.......
if( $database != "" )
{
	$this->dbname = $database;
	$dbselect = mysql_select_db($this->dbname);

	mysql_query("SET CHARACTER SET latin2");

	if( !$dbselect )
	{
		mysql_close($this->db_connect_id);
		$this->db_connect_id = $dbselect;
	}
}
......

Desi nu este legat neaparat de phpbb, ci mai mult de MySQL, ar fi interesant sa se adauge o optiune in panoul administratorului prin care sa se poata configura setul de caractere folosit. M-ar interesa si daca are cineva o alta solutie prin care sa se poata configura serverul MySQL astfel incat sa foloseasca acelasi set de caractere pentru orice client, ca sa nu fie nevoie sa modific toate scripurile din site-urile in care folosesc MySQL.
Avatar utilizator
danielt
AdministratorAdministrator
Mesaje: 1176
Membru din: 18-Oct-2002, 13:02:29
Versiune: 3.0.5
Ext: Nu
Server: UNIX/Linux
Nivel phpBB: Mediu
Nivel php: Mediu
Localitate: Timişoara
Contact:

Mesaj de danielt »

In fisierul de configurare Apache ai o linie care iti seteaza setul de caractere implicit folosit. Treci de pe UTF-8 pe ISO daca asa a fost inainte.Ca si recomandare generala, incearca sa transformi diacriticile intr-un editor setat pe UTF-8 si apoi sa updatezi baza de date. Noul standard web este UTF-8 si va fi tot mai greu de gasit aplicatii setate implicit pe altceva.
ivalentin
Nou venit
Mesaje: 3
Membru din: 12-Oct-2005, 13:25:07
Ext: Nu
Server: Windows
Nivel phpBB: Mediu
Nivel php: Mediu
Localitate: Ploiesti, Romania
Contact:

Mesaj de ivalentin »

Problema nu era de la serverul Apache, acolo facusem deja configurarile necesare. Diacriticele din textul scris direct pe paginile web se vedeau corect in browser, problema aparea doar la textele preluate din baza de date (deci inclusiv cele de pe forum, din lista de produse, etc.).

E drept ca UTF-8 e mult mai bun decat un set localizat, dar inca mai sunt multe persoane care folosesc Win9x/Me, care, din cate stiu eu, nu au fonturi unicode preinstalate. In afara de asta, nu am reusit sa afisez caractere unicode pana acum in site, desi editam fisierele din WinXP, cu setul de caractere unicode. Probabil ca uitasem sa configurez serverul Apache :lol: , o sa mai incerc.

Momentan am modificat scriptul din PHPBB si de pe site si totul merge bine (http://www.plintersoft.ro/forum)
Avatar utilizator
secarica
Utilizator înregistrat
Mesaje: 90
Membru din: 14-Mar-2003, 03:08:08
Versiune: 3.x
Ext: Nu
Server: UNIX/Linux
Nivel phpBB: Mediu
Nivel php: Mediu
Localitate: București, Pământ
Contact:

Mesaj de secarica »

ivalentin scrie:E drept ca UTF-8 e mult mai bun decat un set localizat, dar inca mai sunt multe persoane care folosesc Win9x/Me, care, din cate stiu eu, nu au fonturi unicode preinstalate.
Ştii greşit. De la IE 4 încoace fonturile de bază sunt TTF şi includ cel puţin setul WGL4 (adică codurile de pagină 1250 Central/Eastern European (cu ş şi ţ cu sedilă), 1251 Cyrillic, 1252 Western, 1253 Greek, 1254 Turkish).
Google este UTF-8 de la naştere. Ai observat vreodată vreo neregulă pe un Win98/ME în urma unei căutări cu Google ?

Cristi
... cea mai bună armă este adevărul – cu condiția să știi să-l folosești
Scrie răspuns

Înapoi la “Server”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 3 vizitatori