Chyba v diakritice na webu
Zdravím. Na webu 99 mám problém s diakritikou. Už jsem zkoušel měnit kódování v databázi, přepsat hlavičku vypisovacího souboru, i přehodit v PSPadu. A stále se ta diakritika nezobrazuje. Čím to může být?
Změna předmětu, původně: Chyba v diakritice (Kráťa)
Proč máš kódování v html definované dvakrát a pokaždé jinak?
Už jsem to opravil, ale ten web jsem neprogramoval, já jen pomáhám.
Další nápady?
Problémom je kódovanie, v ktorom komunikuješ s databázou. Keďže si myslí, že s ňou komunikuješ v kódovaní, ktoré nepozná znaky s diakritikou, nahradí ich otáznikmi.
Keď použitím funkcie mysql_set_charset nastavíš kódovanie cp1250 (pre Windows-1250), resp latin2 (pre ISO-8859-2), mohlo by to fungovať.
Základom je samozrejme vedieť, kde máš aké kódovanie. Ak máš napr. pre tabuľky nastavené kódovanie, ktoré nezvláda diakritiku, tak nech nastavíš pre komunikáciu s databázou ľubovoľné kódovanie, nemôžeš očakávať, že z nej nejakú diakritiku dostaneš. Takže v prvom rade by bolo dobré overiť, aké máš nastavené kódovanie v tabuľkách (napr. pomocou show create table meno_tabulky alebo show table status from meno_db where name='meno_tabulky').
V súčasnosti je pre web najlepšou voľbou kódovanie UTF-8.
Na vše mám nasvavené kódování windows 1250 i vdatabázi, i ve výpisu souborů
Očividne to tak v databáze nastavené nemáš.
Aký je posledný riadok z dopytu na MySQL: show create table nazov_tabulky_z_ktorej_zobrazujes_data?
Aký je výsledok dopytu na MySQL: show variables like 'character%'?
show create table nazov_tabulky_z_ktorej_zobrazujes_data: ENGINE=MyISAM AUTO_INCREMENT=112 DEFAULT CHARSET=cp1250
show variables like 'character%" - 2502201210423161330162951.png
Máš tam UTF-8 pre komunikáciu s databázou a nie Windows-1250. Použil si tú funkciu mysql_set_charset, o ktorej som písal? Alebo skoro ekvivalentné riešenie, čo píše nižšie ERASER.
Ešte to môže byť blbo zapísané priamo v databáze a nech spravíš čokoľvek, diakritiku tam nevykúzliš. Môžeš to overiť jednoduchým selectom priamo do tabuľky v nejakom klientovi, ktorý zvláda UTF-8.
Edit: Inak to show variables by si si mal vypísať priamo v tom skripte. Iný MySQL klient si môže nastaviť iné hodnoty, takže sa nedozvieš, čo sa použilo. Prípadne si vypíš show global variables.
Zkusil bych v přenosu z db použít kodování:
Tak jsem to tam dal a napsalo mi to: "Nelze nastavit kódování 1"
Vypíš si chybu pomocou mysql_error, aby si zistil presný problém. Prípadne to vyskúšaj zavolať v nejakom MySQL klientovi (napr. mysql.exe).
Pomocí mysql_error, mi vyjelo 0: 0:
Skúšal si konkrétne toto?
Naozaj ti to vrátilo 0: 0:?
Ano, vrátilo mi to 0: :0:
Měl jsem tam překlep. Nevrátilo mi to vůbec nic
Ak si si ten preklep nevšimol predtým, tak zrejme nemáš nastavené zobrazovanie chýb:
Vyskúšaj to s týmto, ak tam máš nejaké chyby, tak ti ich to vypíše. Inak všetko podstatné už bolo v tomto vlákne napísané.
Paráda. Skús aj napísať, čo vlastne pomohlo.
Až bude někdo řešit za týden totéž, odkážeme jej na toto vlákno, že stačí napsat smajla a je to vyřešené