Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Artas
Tvůrce
Avatar
Artas:25.8.2013 15:48

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
Tvůrce
Avatar
Odpovídá na Artas
Kit:25.8.2013 15:59

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
Tvůrce
Avatar
Odpovídá na Kit
Artas:25.8.2013 16:07

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
Tvůrce
Avatar
Odpovídá na Artas
Kit:25.8.2013 16:11

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
Tvůrce
Avatar
Odpovídá na Kit
Artas:25.8.2013 16:19

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:25.8.2013 16:22

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
Tvůrce
Avatar
Odpovídá na Artas
Kit:25.8.2013 16:25

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
Tvůrce
Avatar
Odpovídá na KlimiCZ
Kit:25.8.2013 16:26

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
Tvůrce
Avatar
Odpovídá na Kit
Artas:25.8.2013 16:26

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
Tvůrce
Avatar
Odpovídá na Artas
Kit:25.8.2013 16:28

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
Tvůrce
Avatar
Odpovídá na Kit
Artas:25.8.2013 16:31

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:25.8.2013 16:32

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

 
Nahoru Odpovědět
25.8.2013 16:32
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Artas
Kit:25.8.2013 16:38

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
Tvůrce
Avatar
Odpovídá na Artas
Milan Gallas:25.8.2013 16:38

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
Tvůrce
Avatar
Odpovídá na Kit
Artas:25.8.2013 16:40

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
Tvůrce
Avatar
Odpovídá na Milan Gallas
Artas:25.8.2013 16:45

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.