Autor Zpráva
loupak
Profil *
Ahoj,
mam v databazi tabulku, ktera ma porovnani utf8_czech_ci. Skripty, ktere pisu v PHP, jsou taktez v utf-8. Na zacatku kazde stranky mam mysql_query ("SET NAMES utf8"); Kdyz pres php skript vkladam do databaze nejake data s diakritikou, tak se ř,ť,č,ů,ň,ě,ď nahradi otazniky. Kdyz najedu do PMA a opravim otazniky na spravne znaky, tak se to ulozi spravne.

Predem dekuji za odpoved.
tiso
Profil
loupak - ešte si skontroluj hlavičku Content-type svojich php skiptov, či tam máš utf8
loupak
Profil *
tam mam:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
tiso
Profil
loupak - myslel som header, nie meta
grimword
Profil
jestli to nahodou nekazi to tvoje mysql_query ("SET NAMES utf8"); - nepouzivam, jedu OK
loupak
Profil *
tiso
Prosim jak to muzu zjistit?

grimword
tak jsem to smazal a problem porad stejny :(
tiso
Profil
loupak - napíšeš Ježiškovi a počkáš do Vianoc.
http://tools.webmasters.sk/header-viewer.php
loupak
Profil *
tiso
TEST-test: text/html; charset=ISO-8859-2
tak tady je asi chyba, muzu to nejak zmenit? .)
bohyn
Profil
loupak
header("Content-Type: text/html; charset=UTF-8");
loupak
Profil *
tak jsem to daval na zacatek stranky, doprostred, pred vkladani do db a zase bez vysledky :( uz jsem docela marnej :( mate prosim jeste nejaky napad jak to napravit?
grimword
Profil
a jake kodovani mas nastavene pro ten soubor? notepad defaultne nastavuje w1250
imploder
Profil
Zkus dát na začátek
mysql_query("SET CHARACTER SET cp1250");
nebo s jiným kódováním pokud je PHP skript v jiném.
SwimX
Profil
Řeším podobný problém.
meta - windows-1250
header:
HTTP/1.1 200 OK
Date: Tue, 06 Jan 2009 22:51:26 GMT
Server: Apache/2.0.59 (Unix)
Set-Cookie: PHPSESSID=389a6e51d5ccede9ac321db901ff2e3c; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Type: text/html

imploder
Zkus dát na začátek mysql_query("SET CHARACTER SET cp1250");
nepomohlo
bohyn
header("Content-Type: text/html; charset=windows-1250");
nepomohlo

databáze - zprava text cp1250_czech_cs Ano NULL
SwimX
Profil
odkaz: http://plavec.borec.cz/?s=diskuse
nightfish
Profil
ihned za výběr databáze (jak do výpisu příspěvků, tak do přidávání) dej
mysql_query("SET NAMES 'cp1250'");

tabulce i sloupcům nastav porovnávání cp1250_czech_cs
vymaž obsah tabulky s příspěvky
a zkus vložit nový
loupak
Profil *
Tak jsem zmenil kodovani a pokazde kdyz vkladam, tak se do db ulozi "P?íliš žlu?ou?ký k?? úp?l ?ábelské ódy" chtel bych to mit uz v db ulozeno s dikritikou.
SwimX
Profil
nightfish
(jak do výpisu příspěvků, tak do přidávání
databázi vybírám jenom na začátku skriptu - pak už jenom posílám dotazy. takže stačí na začátek:
     $link = mysql_connect("localhost", "root", "") or die("Nelze se připojit: " . mysql_error());
     mysql_select_db("diskuse") or die("Nelze vybrat databázi");
     mysql_query("SET NAMES 'cp1250'");

?
tabulce i sloupcům nastav porovnávání cp1250_czech_cs
mám - dokonce i databázi

vymaž obsah tabulky s příspěvky
a zkus vložit nový

a ìšèøžýáí :(
SwimX
Profil
přes phpmyadmin:
ALTER DATABASE `diskuse` DEFAULT CHARACTER SET cp1250 COLLATE cp1250_czech_cs
ALTER TABLE `kniha` DEFAULT CHARACTER SET cp1250 COLLATE cp1250_czech_cs

ALTER TABLE `kniha` CHANGE `datum` `datum` TEXT CHARACTER SET cp1250 COLLATE cp1250_czech_cs NOT NULL
ALTER TABLE `kniha` CHANGE `jmeno` `jmeno` TEXT CHARACTER SET cp1250 COLLATE cp1250_czech_cs NOT NULL
ALTER TABLE `kniha` CHANGE `email` `email` TEXT CHARACTER SET cp1250 COLLATE cp1250_czech_cs NULL DEFAULT NULL
ALTER TABLE `kniha` CHANGE `zprava` `zprava` TEXT CHARACTER SET cp1250 COLLATE cp1250_czech_cs NOT NULL

TRUNCATE TABLE `kniha`


php:
header("Content-Type: text/html; charset=windows-1250");  // s tím i bez toho

     $link = mysql_connect("localhost", "root", "") or die("Nelze se připojit: " . mysql_error());
     mysql_select_db("diskuse") or die("Nelze vybrat databázi");
     mysql_query("SET NAMES 'cp1250'");
     mysql_query("SET CHARACTER SET 'cp1250'");

    $message = eregi_replace("\n", "<br>", htmlentities($_POST['zprava']));
                  $query = "INSERT INTO `kniha` (`id` ,`datum` ,`jmeno` ,`email` ,`zprava` ) VALUES ('', '".strftime("%d. %m. %Y (%H:%M)",strtotime("now"))."', '{$_POST['jmeno']}', '{$_POST['email']}' , '$message');";
                  $result = mysql_query($query) or die("Dotaz nelze provést: " . mysql_error());
 mysql_close($link);


html:
<meta http-equiv="content-type" content="text/html; charset=windows-1250">

stránky index.php stejně jako diskuse.txt která je includována do indexu jsou uloženy s kódováním windows-1250
bohyn
Profil
Zkus jeste tohle:
mysql_query("SET CHARACTER SET cp1250");
Kajman_
Profil *
A verzi mysql máte nainstalovanou stabilní?
SwimX
Profil
bohyn
šèøžýáíé
(upravil sem předchozí příspěvek o tento pokus)
SwimX
Profil
localhost
Verze MySQL: 5.0.41-community-nt
Verze protokolu: 10
Server: localhost via TCP/IP
Uživatel: root@localhost
Znaková sada v MySQL: UTF-8 Unicode (utf8)
Porovnávání pro toto připojení k MySQL: cp1250_czech_cs

phpMyAdmin - 2.10.1
Verze MySQL klienta: 5.0.41
Použitá rozšíření PHP: mysql
Jazyk - Language : Český - CZECH
loupak
Profil *
Ja to vyresil tak, ze jsem vytvoril novou databazi s porovnanim v utf8, vsechny tabulky a sloupce jsem dal taktez do utf8 a odted se mi to tam vklada krasne s diakritikou a krasne se to z ni i cte. Ani nemusim pouzit mysql_query("SET NAMES 'cp1250'"); ci mysql_query("SET CHARACTER SET 'cp1250'");
imploder
Profil
loupak
porovnávání si ověř jestli je správně, pro češtinu musí být utf8_czech_ci

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: