Autor Zpráva
poustevníček
Profil *
Zdravím,
mám problém s ukládáním zprávy z chatu do db.
Ukládám pomocí :
 public function throwMessage($id, $message){
     $adr=$_SERVER["REMOTE_ADDR"];    
         $this->query("
             INSERT INTO `chat` (`id`, `message`, `timestamp`, `ip`)
             VALUES (" . (int)$id.", '" .$this->db->real_escape_string(htmlentities($message)) ."', UNIX_TIMESTAMP(), '$adr')
         
         ");
     }
}

Veškeré kodování souborů mám v UTF-8 a i sloupce v DB jsou v kodování utf8_general_ci.
Text psaný diakritikou a interpunkcí se uloží do db v tomto formátu:
Vyzkoušeno v Chrome a chat je funkční.

Ve výstupu v chatu se ale text zobrazí správně a to:
Vyzkoušeno v Chrome a chat je funkční.

Neporadil by mi někdo co to způsobuje?
kozusnik.jan
Profil *
zkus při připojení k db použít tohle mysql_query("SET CHARACTER SET utf8"); snad pomůže :)
poustevníček
Profil *
Mám toto: MySQL_Query("SET NAMES 'UTF8'") or die(mysql_error());
kozusnik.jan
Profil *
ještě mě napadá tohle: zkontroluj, jestli kódování, jaké máš nastaveno v hlavičce dokumentu se shoduje s kódováním dokumentu, tedy ať jsou obě 2 na UTF-8
poustevníček
Profil *
A nepomohlo ani to Vaše.
kozusnik.jan
Profil *
když se kouknete do phpmyadmina, tak to je v db uložené stejně, jak to vypsalo, ano?
poustevníček
Profil *
V db je toto, Vyzkoušeno v Chrome a chat je funkční.
A malá chybka v připojení k db mám toto
public function __construct() {
        $this->db = new mysqli('localhost', '****', '****', '***');
        $this->query("SET NAMES 'utf8'");
        }
kozusnik.jan
Profil *
zkuste se kouknout tady do této diskuze: http://programujte.com/forum/vlakno/22368-problem-s-kodovanim-databaze/ třeba pomůže


nemůže být ve skriptu něco, co mění kódování ještě před výpisem z db? očividně to ukládá dobře, akorát phpko to už nepřevede do UTF-8. Nebo to ještě zkusit vyřešit převedením textu na UTF-8...
iconv(mb_detect_encoding($text, mb_detect_order(), true), "UTF-8", $text);
okolojsoucí
Profil
Některé časteji řešené dotazy pro MySQL - FAQ » MySQL a čeština
poustevníček
Profil *
Podle toho by měl problém způsobovat tento řádek
VALUES (" . (int)$id.", '" .$this->db->real_escape_string(htmlentities($message)) ."', UNIX_TIMESTAMP(), '$adr')

Ale i po odstranění toho htmlentities je problém stejný.
Zkusím ještě jednou projet google.
Zatím moc děkuji
kozusnik.jan
Profil *
zkuste vložit nový zápis do db... třeba se to projeví až u dalších zápisů... za málo :)
poustevníček
Profil *
Tak je vyhráno, znovu jsem zkusil umazat htmlentities Použil jsem $this->query("SET NAMES 'utf8'"); a voalá, kodování funguje.
Děkuji moc za Vás čas.
Přeji hezký večer
kozusnik.jan
Profil *
Super :) rád jsem pomohl

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: