Autor Zpráva
Kvilda
Profil
Myslíte že by šlo udělat něco jako, že by v jednom <table> byla znaková řada ISO-8859-2 a v druhém <table> Windows-1252.

Text na stránce mám totiž ve znakové řadě Win1252 a když načtu text z DB tak ten je ve znakové ředě ISO88592....

Dík
Hugo
Profil
Kvilda

Tak ho načítej z db v kódování, které potřebuješ. Stači poslat příkaz

set character_set_results = 'latin1';
Kvilda
Profil
co myslíš tím: Stači poslat příkaz _?
Hugo
Profil
Kvilda

Přesně to co píšu.

Musíš db oznámit v jakém kódování chceš dostat výsledky. V php to uděláš takto

MySQL_Query('set character_set_results = latin1');
Kvilda
Profil
čéče pořád mi to z db čte v poho, ale ostatní text mi místo š píše ? v kosočtverci atd...

nemáš ještě jednu radu? Dík
Hugo
Profil
Kvilda

A v jakém kódování máš ostatní text? Musí to být všechno ve stejném kódování, jinak ti to bude blbnout. Hoď sem link, pokud můžeš.
Kvilda
Profil
Na začátku skriptu mám:

Header("Content-Type: text/html; charset=ISO-8859-2");

mysql_query("SET NAMES latin2");
Hugo
Profil
No, ale win1252 je pokud se nepletu latin1. Takže pokud máš web napsaný v latin 1, tak musíš změnit HTTP hlavičku

Header("Content-Type: text/html; charset=windows-1252");

a ošetřit i kódováni při připojení k db. Taky je dobré mít správně nastavené kódování v meta.
Kvilda
Profil
ale to...... jakmile napíšu win1252 a query-latin2 tak se mi špatně načtou data z DB - to ošetřím jak prosím
mila
Profil
1. Musíš mít stránku uloženou ve stejném kódování jako máš uvedené v hlavičce. V notepadu například při ukládání vubrat kódování windows1250 a do hlavičky "<meta http-equiv="content-type" content="text/html; charset=windows-1250">"

2. Musíš mít data v databázi ve správném kódování. Zde často funguje, že dvě chyby se vyruší. Pokud je tam špatně vkládáš a špatně vybíráš, tak můžeš dostávat co očekáváš, ale v db to bude špatně. Podívej se na to v phpMyAdminu. Jestli to je tam rozsypané, tak je někde chyba. (Neplatí pro mysql do jisté verze, kde se nenastavovalo kódování)

3. Musíš správně komunikovat s db. Funguje na začátku zavolat mysql_query("SET NAMES cp1250");

4. Ideálně by měli i sloupce v db ukládat text ve stejném kódování. Bude to rychlejší a předejdeš problémům. Ale mělo by to fungovat i bez toho. Právě SET NAMES zařídí, že mySQL si data přebere z jednoho k´dování do druhého.
Kvilda
Profil
No to je přesně vono............ díky moc všem
Toto téma je uzamčeno. Odpověď nelze zaslat.

0