Avatar
Artas
Redaktor
Avatar
Artas:

Ahoj, se SQLite právě začínám a narazil jsem na první problém. Dá se nějak nastavit kódování, abych do databáze mohl ukládat i české znaky? Díky

 
Odpovědět 25.8.2013 15:48
Avatar
Kit
Redaktor
Avatar
Odpovídá na Artas
Kit:

SQLite umí korektně pracovat jen s Unicode. Pokud tedy přejdeš na UTF-8 (časem tě to stejně nemine), čeština se bude ukládat správně.

Nahoru Odpovědět 25.8.2013 15:59
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Artas
Redaktor
Avatar
Odpovídá na Kit
Artas:

Promiň, teď jsem se podíval na výstup přímo ze sqlite a ten je v pořádku s diakritikou. Problém nastává, když s tím chci pracovat v php-tak tam už je to bez diakritiky:

$pdo = new PDO('sqlite:test.db');
$result = $pdo->query('SELECT * FROM test');
while ($row = $result->fetch(PDO::FETCH_OBJ)) {
        echo $row->id . " " . $row->text . "<br />";
}
 
Nahoru Odpovědět 25.8.2013 16:07
Avatar
Kit
Redaktor
Avatar
Odpovídá na Artas
Kit:

V tom případě ti asi chybí deklarace použité znakové sady v hlavičce HTML.

Nezapomeň také na ošetření výstupu HTML:

echo $row->id . " " . htmlspecialchars($row->text) . "<br />";
Nahoru Odpovědět 25.8.2013 16:11
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Artas
Redaktor
Avatar
Odpovídá na Kit
Artas:

Takhle vypadá moje testovací stránka:

<!DOCTYPE html>
<html lang="cs-cz">
        <head>
                <title>Test SQLite</title>
                <meta charset="utf-8" />
        </head>
        <body>
        <?php
                $pdo = new PDO('sqlite:test.db');
                $result = $pdo->query('SELECT * FROM test');
                while ($row = $result->fetch(PDO::FETCH_OBJ)) {
                        echo $row->id . " " . $row->text . "<br />";
                }
        ?>
        <p>Příliš žluťoučký kůň úpěl ďábelské ódy</p>
        </body>
</html>

v databázi mám uložený ten samý text jako je v tom odstavci, ale z databáze mi vyleze tohle: P��li� �lu�ou�k� k�� �p�l Ԡbelsk� �dy

 
Nahoru Odpovědět 25.8.2013 16:19
Avatar
KlimiCZ
Člen
Avatar
Odpovídá na Artas
KlimiCZ:

Skus si nastavit v php Kodování na utf-8 (nevím jak na to ,ale už sem to někde viděl)

Nahoru Odpovědět 25.8.2013 16:22
Nesnaž se zakrýt něco, co jsi provedl úmyslně. Svět je tak malý, že dotyčný se to stejně dozví.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Artas
Kit:

Opravdu seš si jist, že jsi toho koně uložil do databáze v kódování UTF-8?

Nahoru Odpovědět 25.8.2013 16:25
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na KlimiCZ
Kit:

To se týká MySQL.

Nahoru Odpovědět 25.8.2013 16:26
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Artas
Redaktor
Avatar
Odpovídá na Kit
Artas:

Myslím, že ano, když si v konzoli zobrazím výstup, tak tam je to v pořádku. Problém je jen v php.

 
Nahoru Odpovědět 25.8.2013 16:26
Avatar
Kit
Redaktor
Avatar
Odpovídá na Artas
Kit:

Jenže konzoli máš ve Windows-1250, ne?

Nahoru Odpovědět 25.8.2013 16:28
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Artas
Redaktor
Avatar
Odpovídá na Kit
Artas:

Tak tohle netuším, asi ano. Jak se dá tedy do SQLite ukládat v UTF8?

 
Nahoru Odpovědět 25.8.2013 16:31
Avatar
Michal Žůrek (misaz):

srovnej všechno do UTF-8. Zdrojový kód, databázi, výstup.

Nahoru Odpovědět 25.8.2013 16:32
Nesnáším {}, proto se jim vyhýbám.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Artas
Kit:

Pokud budeš to té databáze ukládat data jen přes webový formulář v UTF-8, tak se vše automaticky překóduje. Proto si každý dělá u svého webu administraci - zjednodušuje to tyhle starosti a je pak jedno, ze kterého počítače data modifikuješ.

Nahoru Odpovědět 25.8.2013 16:38
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Milan Gallas
Redaktor
Avatar
Odpovídá na Artas
Milan Gallas:

Jeden tip. Pokud používáš PSPad, tak si nastav formát na UTF-8. Já sem tam měl Windows a dělalo mi to to co tobě.

 
Nahoru Odpovědět 25.8.2013 16:38
Avatar
Artas
Redaktor
Avatar
Odpovídá na Kit
Artas:

Ano, teď jsem vyzkoušel vložit další řádek pomocí php a ten se zobrazuje v pořádku - problém byl tedy s příkazovým řádkem windows. Díky za rady

 
Nahoru Odpovědět 25.8.2013 16:40
Avatar
Artas
Redaktor
Avatar
Odpovídá na Milan Gallas
Artas:

Jak Notepad++, tak i Aptana Studio mám nastavené na UTF-8. Jediné na co jsem nepomyslel je kódování toho příkazového řádku :-).

 
Nahoru Odpovědět 25.8.2013 16:45
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 16 zpráv z 16.