Autor Zpráva
web2000
Profil *
Zdravím,

mám problém s češtinou ze získaných dat s mysql databáze. Tak bych chtěl někoho zkušenějšího požádat o radu.

Data v databázi mám uložená v iso-8859-2, ale na stránkách mám kódování windows-1250.

Za dotazem pro výběr databáze vkládám tento příkaz:

mysql_query("set character set cp1250"); bohužel MySql mi na něj vůbec nereaguje jedná se o verzi 4.0.27


Neexistuje i nějaký další příkaz který by zde fungoval? Děkuji
Alphard
Profil
za dotazem je to na nic, musí být před výběrem
zkuste
mysql_query("set names 'cp1250'");

Edit, tu nízkou verzi jsem přehlédl, funguji už tak trochu jako automatické FAQ.
Mastodont
Profil
Alphard
Míněn byl výběr DATABÁZE.
web2000
Pokud máš opravdu MySQL 4.0.X, tak to máš asi pech. Potřebuješ nejméně 4.1
web2000
Profil *
Asi máte pravdu zítra se pokusím domluvit s poskytovatelem hostingu o přesunutí na vyšší verzi.
peta
Profil
Mastodont ja ma dojem, ze SET NAMES je az od 4.2

web2000
1. spravne kodovani stranky META
2. spravne kodovani od serveru PHP header()
3. spravne kodovani prevodnikem SET NAMES
4. spravne kodovani tabulky v databazi, ale na tom v podstate nesejde
Pokud mas data iso-8859-2 a zobrazujes je jako windows-1250, pak potrebujes SET NAMES prevodnik SQL. Ktery se samozrejme da resit i pres PHP, ale je to trosku zatez na server. Pokud je tvoje databaze mensi nez 4.x , pak tam prevodnik SET NAMES nefunguje a lze to resit jen pres PHP.

function func_charset($name)
{
global $CFG;
$a = 'charset';
if (isset($CFG) && isset($CFG[$a]) && isset($CFG[$a][$name]) && $CFG[$a][$name]!="")
{
switch ($name)
{
case 'h_xml' : return '<?xml version="1.0" encoding="'.$CFG['charset'][$name].'"?>'; break;
case 'h_html': return ' xmlns="http://www.w3.org/1999/xhtml" xml:lang="'.$CFG['charset'][$name].'" lang="'.$CFG['charset'][$name].'"'; break;
case 'h_lang': return '<meta http-equiv="Content-language" content="'.$CFG['charset'][$name].'"/>'; break;
case 'h_char': return '<meta http-equiv="Content-Type" content="text/html; charset='.$CFG['charset'][$name].'"/>'; break;
case 'sql' : sq($CFG['charset'][$name]); break;
case 'php' : header('Content-Type: text/html; charset='.$CFG['charset'][$name]); break;
default: break;
}
}
}
Akacko
Profil
peta
Potom máš špatný dojem, SET NAMES je opravdu od verze 4.1.
Chamurappi
Profil
Reaguji na peta:
lang="'.$CFG['charset'][$name].'"';
Proč strkáš jméno kódování do atributu „lang“, kam odjakživa patří jméno jazyka? (Tedy „cs“ pro češtinu, „en“ pro angličtinu, atd.)
Mastodont
Profil
peta
Byl bys tak hodný a ukázal mi, kde vidíš nějakou MySQL 4.2?
http://downloads.mysql.com/archives.php

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: