Ahoj ahoj.
Situace se má takto:
stránky psané a uožené v iso-8859-2
v hlavičce v meta tagu je taky iso-8859-2
databáze je celá v latin2_czech_cs
každá tabulka je v latin2_czech_cs
každý sloupeček je v latin2_czech_cs
Čárkovaná písmena se ukládají v pořádku, místo háčkovaných se ukládají otazníčky.
PROČ ?! Už na tom dělám moc dlouho a nedává to smysl :(
                                 
                                 
                               
               
                              
                                 
                                      mrkni tu do jiných threadů, dával jsem tam ve spojení s UTF-8 3 mysql_query, které ti myslím pomůžou...
                                 
                                 
                               
               
                              
                                 
                                      a je vystup/vstup SQL nastaven na iso?
                                 
                                 
                               
               
                              
                                 
                                      2 Jirka -> koukal jsem na to, ale už jsem to v utf8 měl a to bylo ještě horší. To není řešení, to je jen obcházení z jiné strany.
2 Marek -> myslíš mysql_query("set names...") a tak ?
                                 
                                 
                               
               
                              
                                 
                                      myslel jsem, že UTF-8 vyměníš v těch query za ISO-8859-2
                                 
                                 
                               
               
                              
                                 
                                      Já to ale celé dělal v utf8 - celou DB včetně úvodních query "SET COLLATE". A to se mi ty problémové znaky do DB ani neuložily - stejně jako celý text, co byl po nich.
                                 
                                 
                               
               
                              
                                 
                                      pak je to jasný...
> stránky psané a uožené v iso-8859-2
> v hlavičce v meta tagu je taky iso-8859-2
před ukládáním do DB použij iconv(), protože prohlížeč odesílá 8859-2, který pak uložíš jako UTF8
                                 
                                 
                               
               
                              
                                 
                                      Počkej, tys mi nerozuměl - tak jsem to dělal, ale protože to nefachalo, celý jsem to předělal a je to tak, jak jsem to popisoval v příspěvku číslo 1. Ergo všechno v latin2 a isu.
                                 
                                 
                               
               
                              
                                 
                                      Tááák.
Teď jsem dal i příkaz SET NAMES 'latin2'. Výsledkem je, že to ě,č,ř píše správně a jen š,ž zlobí.
Proč ?
                                 
                                 
                               
               
                              
                                 
                                      chlape, máě v tom pěknej bordel :-)
                                 
                                 
                               
               
                              
                                 
                                      To není vtipný ! :D
Dobře, je, ale je to smutný. Uznej, aby se ukazovala jen nějaká diakritika, to už je fakt zrůdnost...
                                 
                                 
                               
               
                              
                                 
                                      Klid, teprve se pobavíme ;-)
- neměl bys kompletní seznam query, které proběhnou s uložením a vypsáním do DB?
- rád bych viděl meta tagy stránky, která ukládá a vypisuje obsah DB
- co nějaké Headery s kódováním?
                                 
                                 
                               
               
                              
                                 
                                      Ookej.
Stránka, kde se to vypisuje:
*něco*
<head>
	<title>Webové stránky softballového klubu Starý psi</title>
	<base href="http://www.starypsi-softball.com/">
	<link rel="stylesheet" type="text/css" href="styly.css">
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2"/>
	<meta name="keywords" content="softball, klub, softballový klub, starý psi">
</head>
*něco*
function nahrad($string) {
	$string=strtr($string, "ą", "‘");
	$string=strtr($string, "©", "Š");
	$string=strtr($string, "ľ", "ž");
	return $string;
};
*něco*
$link = mysql_connect("localhost", "starypsi-softball.com", "oldog") or die("Nepovedlo se přihlásit k MySQL.");
mysql_select_db("starypsi-softball_com", $link);
mysql_query("SET NAMES latin2");
$vysledek = mysql_query($query, $link);
while ($row=mysql_fetch_array($vysledek)) {
	$date = $row[datum];
	$toprint = substr($date, 8, 2);
	$toprint .= ".";
	$toprint .= substr($date, 5, 2);
	$toprint .= ". ";
	$toprint .= substr($date, 11, 8);
	
	echo "<tr border=\"none\"";
	if($k%2==1) {
		echo "bgcolor=\"#645098\">";
	} else {
		echo "bgcolor=\"#2A0E72\">";
	};
	echo "<td align=\"center\" width=\"10%\" border=\"none\">";
	echo nahrad($row[jmeno])."<br>";
	echo "<div class=\"datum\">".$toprint."</div></td>";
	echo "<td valign=\"top\" border=\"none\">";
	echo nl2br(nahrad($row[text]))."</td></tr>";
$k++;
};
Stránka, kde se to ukládá:
headery žádný, je to jen php skript
# ...::: MySQL PŘIPOJENÍ :::...
$link = mysql_connect("localhost", "starypsi-softball.com", "oldog") or die("Failed to acces MySQL database.");
mysql_select_db("starypsi-softball_com") or die("Failed to select database.");
mysql_query("SET NAMES 'latin2'");
$cas = date("Y-m-d H:i:s");
$query = "INSERT INTO chatroom (jmeno, text, datum) 
			VALUES ('$jmeno', '$prispevek', '$cas')";
mysql_query($query, $link) or die("Failed to insert article.");
mysql_close();
header("location: index.php?cont=nastenka");
Snad jsem to nezmrvil - takhle by to mělo být. Ta funkce nahrad() je relikt z dob minulých, kdy to fungovalo a naši věc by neměla vůbec ovlivňovat.
                                 
                                 
                               
               
                              
                                 
                                      nemyslel jsem:
SET NAMES 'charset_name'
SET CHARACTER SET charset_name
viz dokumentace Chapter 10. Character Set Support
                                 
                                 
                               
               
                              
               
                              
                                 
                                      Tak já už vážně nevím. Zkoušel jsem
mysql_query("SET CHARACTER SET 'latin2'");
i
mysql_query("SET NAMES 'latin2'");
s apostrofama i bez nich. A nic nefunguje :(
Skutečně tu není nikdo, kdo by věděl jak z toho ven ?
                                 
                                 
                               
               
                              
               
                              
                                 
                                      > Tááák.
> Teď jsem dal i příkaz SET NAMES 'latin2'. Výsledkem je, že to ě,č,ř píše správně a jen š,ž zlobí.
> Proč ?
mam pocit, ze problem by mohl byt v tom, ze ty znaky uz jsou v databazi tak ulozene (v ulozenych zaznamech)- a tedy je tak i zobrazi. Jestli pouzivas SET NAMES atd. pokazde hned po pripojeni do databaze (predpokladam, jinak by to nemelo smysl), tak vyzkousej, jestli to tedy dela i pro nove ukladane retezce, resp. znaky s diakritikou.
                                 
                                 
                               
               
                              
                                 
                                      Dělá. Vždycky do ní vložím ěščřžýáíéĚŠČŘŽÝÁÍÉ jako základní kontrolu.
Mimochodem má tam být SET CHARACTER SET a zároveň SET NAMES ?
                                 
                                 
                               
               
                              
                                 
                                      ja pouzivam na webu i v db utf8 a mam to takto:
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET NAMES utf8");
a vse funguje jak ma.