Lidi, prosím, pomozte... už to fakt nechápu...
nastavil jsem MySql na dvou ruznych serverech s uplne stejnymi parametry, ale při tahání dat z DB do PHP kódu se mi na jednom serveru vše zobrazuje správně a na druhém dostává otazníky místo některých znaků (ď, ť, apod.)
PHP je ve win-1250 a mysql:
character-set-client = cp1250
character-set-connection = cp1250
character-results = cp1250
character-server = cp1250
character-system = utf8
character-sets-dir = C:/Program Files/mysql/share/charsets
collation-connection = cp1250_general_ci
collation-database = cp1250_general_ci
collaton-server = cp1250_general_ci
i porovnání všech databází a sloupců je cp1250_general_ci
navíc - admin ukazuje - language: Czech (cs-utf-8) a
Znaková sada připojení k MySQL: utf8_czech_ci
Díky za každou pomoc... :-)
WZ běží na linuxu a tady je kódování "iso-8859-2"
jojo, to jsem si vsiml, ale neresim ted wz, spise tak vseobecne...
koukal jsem ruzne po navodech a jinych forech... cestinu v MySQL resi spousta lidi, ale je to vse takove zmatene, neurcite... mnohdy bez zaveru...
tohle tema neni poradne nikde popsane, takze proto se snazim zeptat nekoho tady...
nevim, dle meho nazoru mam vse nastavene v poradku, uz nemam co prenastavovat...
něco mě napadlo... může nastat taková situace, že mám sice porovnavani vsech db a tabulek nastavene na cp1250_general_ci, ale data v nich jsou v kodovani jinem?
Mozna vymyslim reseni spatnym smerem, ale uz jsem zkusil i nainstalovat MySQL 4.1 a vse vypada naprosto stejne :-((
Jo, pokud máš v tabulkách nastavené kódování win a pošleš tam iso, tak tam zůstane otazník...
v tabulkach mam nastavene cp1250_general_ci, data v nich obsahuji veskerou diakritiku a zobrazuji je v phpadminu spravne...
ale v php kodu se zobrazi misto nekterych otazniky a to same v prikazovem radku...
to znamena, ze ty data v tabulkach musim nejak prekodovat asi, co? takhle... vlozil jsem je tam ja, slouzi pouze ke cteni...
Ještě existuje něco jako výstupní kódování SQL, nevím jestli třeba není u PHP std nastavené, že si kódování přepne na iso. Zkus si v php pustit mysql_client_encoding(). Schválně co vrátí. Jestli iso, tak je třeba v mysql nastavit kódování klinta na win.
Víc mě nenapadá.
Já s češtinou problém nemám - jediné, co je třeba dodržet, je konzistentní kódování - čili:
péhápko, html stránky I záznamy v databázi podléhají společnému kódování, v mém případě cp1250
Nejlepší způsob, pokud vkládáte do db text, je se nejprve ujistit, že phpmyadmin je nastaven na příslušné kódování (pro čechy jsou tři varianty... utf-8 není v phpmyadminoj jediná)
To Nípal:
jojo, napadlo mě, že bude průšvih v kodovani phpmyadmina, ale jak ho změnit?
na své uvodní stránce nabízí pouze utf8... např. phpadmin na mysql.wz.cz nabídne výběr kódování hned na začátku, to ale ten, co mám já, nedělá. určitě to půjde nějak nakonfigurovat, nechce se mi ale hrabat do konfigurace jen tak naslepo.
taky jsem chtěl zkusit změnit data, které obsahují špatně kódované znaky, v příkazovém řádku, jenže ten zase pro změnu diakritiku vůbec neumí.
mohu poprosit o nápovědu?
To: Marek z Markova
tak jsem to zkusil dle tvého návodu a hups... vypsalo to latin1, což je zřejmě špatně.
jenže po vypsání mysql variables je téměř vše nastavené na cp1250, viz 1. příspěvek v tomto tématu, tak kde vlastně sebral to latin1 a jak mu to můžu změnit?
Že není v tvém phpmyadminoj ve výběru cp1250, mi přijde divné, tos musel něco smazat... zkus stáhnout phpmyadmina a nahrát jej znova.
zkusil jsem jinou verzi (2.6.0-pl3), stahnul, doplnil do config.inc.php heslo pro pristup a porad stejny vysledek, na uvodni strance admina nabizi pouze utf8:
language: Czech (cs-utf-8)
Znaková sada v MySQL: UTF-8 Unicode (utf8)
Znaková sada připojení k MySQL: utf8_czech_ci
dobre, takze stahnul jsem si nejakou starsi verzi, ktera umoznuje volbu i jinych language, nez utf8... dal jsem tedy win1250 a pro zmenu... ty spatne data uz ukazuje i admin spatne - misto znaku ď je otazník i jiných.
a když se pokusím záznam adminem změnit, stále ukazuje otazník...
tak nevim, jestli to byl krok dopredu nebo naopak...
a taky mi neni jasne, proc admin ukazuje tyto hodnoty systemovych promennych:
character_set_client latin1
character_set_connection latin1
character_set_results latin1
character_set_system utf8
character_sets_dir C:\Program Files\MySQL\share\charsets/
collation_connection latin1_swedish_ci
ktezto prikazovy radek tyto:
character_set_client cp1250
character_set_connection cp1250
character_set_results cp1250
character_set_system utf8
character_sets_dir C:\Program Files\MySQL\share\charsets/
collation_connection cp1250_general_ci
omlouvam se, jestli tohle forum a vas, ctenare, nejak hodne bombarduju, ale prece nemuze byt nijak synchronizovat veskere znakove sady... :-(
To ci WZ bezi na Linuxe by som silno pochyboval ! ! !
Řešil jsem asi stejný problém, jen na jiném klientun nejedná se o PHP.
Mám MySQL 4.1 a připojuju se na něj z nějakého software přes ODBC ovladač MyODBC 3.51.10-2. A místo některých písmen to taky ukládalo a zobrazovalo jen otazníky.
Teď se mi to metodou pokusů a omylů podařilo vyřešit.
V ODBC v Connect options je třeba vyplnit Initial Statement: SET CHARACTER SET latin2
V tvém případě to teda bude cp1250 místo latin2. Jak to zařídit v PHP, to bohužel nevím. Ale třeba ti to alespoň trochu pomůže.
Martin