Hallo Alle,
bitte werft doch mal einen Blick auf folgendes Script.
Fragen:
bin ich in der richtigen group? :-)
wieso zeigt mysql_client_encoding($link) latin1 an?
wieso wird mein INSERT nur im 2. Fall richtig abgespeichert (mit
vorangestelltem _utf8)?
Wie erreiche ich, dass es immer richtig abgespeichert wird?
#$charset="iso-8859-1";
$charset="utf-8"
?>
print "Sie können an folgenden Kursen teilnehmen \n";//Ausgabe OK
print "moźesz uczestniczyÄ w nastÄpujÄ cych kursach \n";//Ausgabe OK
//Verzweifelungstat!
mysql_query("SET NAMES 'utf8' COLLATE 'utf8_general_ci'",$link);
mysql_query("SET CHARACTER SET 'utf8'",$link);
mysql_query("ALTER TABLE 'internationalisation' DEFAULT CHARACTER SET 'utf8'
COLLATION 'utf8_general_ci'");
if($_POST['send'])
{
mysql_query("INSERT INTO internationalisation (de,pl)
VALUES('$_POST[de]','$_POST[pl]')");
mysql_query("INSERT INTO internationalisation (de,pl)
VALUES(_utf8'$_POST[de]',_utf8'$_POST[pl]')");
print mysql_error();
}
$result=mysql_query("SELECT de,pl FROM internationalisation");
while ($data=mysql_fetch_array($result))
{
print $data['de']." ".$data['pl']." ";
}
/** Ausgabe
*Sie können an folgenden Kursen teilnehmen mo?esz uczestniczy? w
*nast?puj?cych kursach
*Sie können an folgenden Kursen teilnehmen moźesz uczestniczyÄ w
*nastÄpujÄ cych kursach
*/
?>
accept-charset="UTF-8">
//input ist: Sie können an folgenden
Kursen teilnehmen
// input ist moźesz uczestniczyÄ w
*nastÄpujÄ cych kursach
Da liegt der Fehler scheinbar. Nach verzweifeltem Rumprobieren in
mysql_query("SET NAMES 'utf8'")
geändert. Jetzt läuft es. Aber wieso verstehe ich nicht! phpMyAdmin gibt als
Verbindungstyp uft8 an.
Weiterhin verzweifelt...
ach die DB ist übrigens eine 4.1.15 und es scheint mir, als wenn mein
Problem nichts mit php zu tun hat.
Tom
Re: utf-8/mysql Verständnisfrage
am 09.07.2006 19:37:00 von Kai Ruhnau
Thomas Grabietz wrote:
> Thomas Grabietz wrote:
>
>
>> //Verzweifelungstat!
>> mysql_query("SET NAMES 'utf8' COLLATE 'utf8_general_ci'",$link);
>
> Da liegt der Fehler scheinbar. Nach verzweifeltem Rumprobieren in
>
> mysql_query("SET NAMES 'utf8'")
Mach' mal die Anführungsstriche um utf8 weg, die gehören da nicht hin.
Das gilt für _alle_ Statements, die du benutzt hast (also auch ALTER
TABLE, CREATE TABLE, COLLATE, ...)
> geändert. Jetzt läuft es. Aber wieso verstehe ich nicht! phpMyAdmin gibt als
> Verbindungstyp uft8 an.
phpMyAdmin ist nicht gerade dafür bekannt, die
Characterset-Möglichkeiten seit MySQL-4.1 richt zu nutzen und fehlerfrei
umzusetzen.
> Weiterhin verzweifelt...
>
> ach die DB ist übrigens eine 4.1.15 und es scheint mir, als wenn mein
> Problem nichts mit php zu tun hat.
Stimmt.
X-Post und F'up2 de.comp.datenbanken.mysql
GrüÃe
Kai
--
This signature is left as an exercise for the reader.
Re: utf-8/mysql Verständnisfrage
am 09.07.2006 19:37:00 von Kai Ruhnau
Thomas Grabietz wrote:
> Thomas Grabietz wrote:
>
>
>> //Verzweifelungstat!
>> mysql_query("SET NAMES 'utf8' COLLATE 'utf8_general_ci'",$link);
>
> Da liegt der Fehler scheinbar. Nach verzweifeltem Rumprobieren in
>
> mysql_query("SET NAMES 'utf8'")
Mach' mal die Anführungsstriche um utf8 weg, die gehören da nicht hin.
Das gilt für _alle_ Statements, die du benutzt hast (also auch ALTER
TABLE, CREATE TABLE, COLLATE, ...)
> geändert. Jetzt läuft es. Aber wieso verstehe ich nicht! phpMyAdmin gibt als
> Verbindungstyp uft8 an.
phpMyAdmin ist nicht gerade dafür bekannt, die
Characterset-Möglichkeiten seit MySQL-4.1 richt zu nutzen und fehlerfrei
umzusetzen.
> Weiterhin verzweifelt...
>
> ach die DB ist übrigens eine 4.1.15 und es scheint mir, als wenn mein
> Problem nichts mit php zu tun hat.
Stimmt.
X-Post und F'up2 de.comp.datenbanken.mysql
GrüÃe
Kai
--
This signature is left as an exercise for the reader.
Re: utf-8/mysql Verständnisfrage
am 09.07.2006 21:18:33 von Carsten Wiedmann
Kai Ruhnau schrieb:
> Thomas Grabietz wrote:
> > Thomas Grabietz wrote:
> > > mysql_query("ALTER TABLE 'internationalisation' DEFAULT CHARACTER SET
> > > 'utf8'COLLATION 'utf8_general_ci'");
> >
> > > //Verzweifelungstat!
> > > mysql_query("SET NAMES 'utf8' COLLATE 'utf8_general_ci'",$link);
> >
> > Da liegt der Fehler scheinbar. Nach verzweifeltem Rumprobieren in
> > mysql_query("SET NAMES 'utf8'")
>
> Mach' mal die Anführungsstriche um utf8 weg, die gehören da nicht hin. Das
> gilt für _alle_ Statements, die du benutzt hast (also auch ALTER TABLE,
> CREATE TABLE, COLLATE, ...)
Bei "SET NAMES 'foo' COLLATE 'bar'" kommt der Singlequote durchaus hin. Bei
"CHARACTER SET foo COLLATE bar" allerdings nicht. Bei dem Tabellenbezeichner
(hier "internationalisation") muss es dafür ein Backquote sein: "ALTER TABLE
`internationalisation` ...".