Autor | Zpráva | ||
---|---|---|---|
poustevníček Profil * |
#1 · Zasláno: 29. 12. 2013, 16:39:56
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 * |
#2 · Zasláno: 29. 12. 2013, 17:27:59
zkus při připojení k db použít tohle
mysql_query("SET CHARACTER SET utf8"); snad pomůže :)
|
||
poustevníček Profil * |
#3 · Zasláno: 29. 12. 2013, 17:41:26
Mám toto: MySQL_Query("SET NAMES 'UTF8'") or die(mysql_error());
|
||
kozusnik.jan Profil * |
#4 · Zasláno: 29. 12. 2013, 17:42:53
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 * |
#5 · Zasláno: 29. 12. 2013, 17:42:56
A nepomohlo ani to Vaše.
|
||
kozusnik.jan Profil * |
#6 · Zasláno: 29. 12. 2013, 17:45:13
když se kouknete do phpmyadmina, tak to je v db uložené stejně, jak to vypsalo, ano?
|
||
poustevníček Profil * |
#7 · Zasláno: 29. 12. 2013, 17:47:01
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 * |
#8 · Zasláno: 29. 12. 2013, 17:47:15 · Upravil/a: kozusnik.jan
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 |
#9 · Zasláno: 29. 12. 2013, 17:49:42
|
||
poustevníček Profil * |
#10 · Zasláno: 29. 12. 2013, 17:50:09
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 * |
#11 · Zasláno: 29. 12. 2013, 17:51:39
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 * |
#12 · Zasláno: 29. 12. 2013, 17:53:00
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 * |
#13 · Zasláno: 29. 12. 2013, 17:55:26
Super :) rád jsem pomohl
|
||
Časová prodleva: 10 let
|
0