Seturi de caractere in MySQL
Scris: 12-Oct-2005, 13:37:42
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 in fisierul mysql4.php, dupa:
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.
Pe un calculator de test, am reusit sa rezolv partial problema adaugand linia
Cod: Selectaţi tot
mysql_query("SET CHARACTER SET latin2");
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;
}
}
......