pogledaj pocetak fajla, da li negde imas "set names ..." ... mysqldump to stavlja, ne znam kako cpanel pravi bekap....
elem, ako nista od toga ne pomogne, daj iz nekog hex editora daj dve reci posto ovi upitnici i ove tacke nisu ni ? ni . vec nesto drugo ..
ono sto meni ovde najvise lici je da je ovo utf8 ali da je tebi u bazi smece. sta to znaci ..
ako na primer imes tabelu
Code:
create table t1 (id int auto_increment primary key, smece char(30) character set utf8) engine=myisam;
mysql ce u atributu smece cuvati znake kao utf8. e sad, zamisli da imas php stranu koja izgleda ovako:
Code:
<?php
$conn=mysql_connect('localhost', 'user', 'pass') or die('bedaj');
mysql_select_db('test') or die('bedak');
mysql_query('INSERT INTO t1 (smece) VALUES ('.mysql_real_escape_string($_POST['smece'], $conn).')', $conn);
mysql_close($conn);
echo ' u bazu sam upisao smece ';
?>
dakle sada sa neke forme na nekom html-u koji je utf8 u kojoj imas tekst polje "smece" u koje upises "neće važiti" desava se kada izvrsis onaj query gore sledece:
1. kreira se konekcija sa default vrednostima. default client character set za php je LATIN1 sto znaci da mysql od tebe ocekuje jednobajtna slova.
2. ti pokupis utf8 vrednost $_POST[smece] sto je niz bajtova { 'n', 'e', 0xC4, 0x87, 'e', ' ', 'v', 'a', 0xC5, 0xBE, 'i', 't', 'i'" }
3. sada taj niz bajtova posaljes mysql-u i on to sada snimi kao utf8, tj sada se u mysql-u u tom polju nalazi string od 13 karaktera i to zauzima 39 bajtova.
ti sada kada radis bekap te tabele iz aplikacije koja ima ideju kako se na bazu kaci, zakacis se na mysql sa pravilnim utf8 enkodingom i zatrazis taj string, mysql ti ga posalje karakter po karakter kao utf8
{ 'n', 'e', 0xC3, 0x84, 0xE2, 0x80, 0xA1, 'e', ' ', 'v', 'a', 0xC3, 0x85, 0xC2, 0xBE, 'i', 't', 'i'" }
E sad uporedi ovo sto sam ja sada preracunao sa ovim sto si ti dobio nazad ...
kako da sprecis da ti se ovo vise ne desava -> SET NAMES UTF8 ...