Pagina 1 din 1

Seturi de caractere in MySQL

Scris: 12-Oct-2005, 13:37:42
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.

Scris: 13-Oct-2005, 11:05:47
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.

Scris: 14-Oct-2005, 08:56:04
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)

Scris: 15-Dec-2005, 01:39:22
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