Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
PhpMyAdmin - Kollations problem [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
PhpMyAdmin - Kollations problem


 
nobody2
11-03-2007, 17:32 
 
Hallo!
Also, ich verwende bei meiner Website die UTF-8 Kodierung. Wenn ich von meiner Website Daten in eine Mysql-Tabelle einfüge, so funktioniert das problemlos. Wenn ich allerdings vom PhpMyAdmin Datensätzen mit Umlauten einfüge, wo werden mir diese dann nicht korrekt angezeigt (auf der Website / im PhpMyAdmin bereich werden sie korrekt angezeigt).

Meine ganzen Tabellen sind mit utf8_unicode_ci kodiert.
Die PhpMyAdmin-Startseite zeigt mir folgendes :
Language: de(de-utf-8)
MySQL-Zeichensatz: UTF-8 Unicode (utf8)
Zeichensatz / Kollation der MySQL-Verbindung: utf8_unicode_ci

 
Shurakai
11-03-2007, 18:27 
 
Gibst du deine Website auch im entsprechenden Zeichensatz aus?

 
nobody2
11-03-2007, 18:43 
 
Ich habe im Headbereich
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
definiert.
Alle einträge, welche ich über die Webseite mache, werden mir dann auch korrekt auf der Website angezeigt.
Die Einträge, welche ich über den PhpMyAdmin bereich mache, werden mir auf der Webseite nicht korrekt dargestellt. Im PhpMyAdmin breich allerdings schon.

 
ghostgambler
11-03-2007, 23:32 
 
SET NAMES wohl nicht ausgeführt...

 
Slava
12-03-2007, 05:53 
 
Original geschrieben von nobody2
Ich habe im Headbereich
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
definiert.
Alle einträge, welche ich über die Webseite mache, werden mir dann auch korrekt auf der Website angezeigt.
Die Einträge, welche ich über den PhpMyAdmin bereich mache, werden mir auf der Webseite nicht korrekt dargestellt. Im PhpMyAdmin breich allerdings schon.
ein vernünftige Antwort auf diese Frage bekommst du auch bei PHPMyAdmin - Forum nicht.
Am bestens machst du eigene formularen oder du ladest letzte Version 2.10.0.2
all-languages-utf-8-only.zip.

 
ghostgambler
12-03-2007, 15:26 
 
Original geschrieben von Slava
ein vernünftige Antwort auf diese Frage bekommst du auch bei PHPMyAdmin - Forum nicht.
Am bestens machst du eigene formularen oder du ladest letzte Version 2.10.0.2
all-languages-utf-8-only.zip.
:confused:


Ich wette 50 Cent, dass PMA vollkommen korrekt funktioniert, der TO nur einfach die Zeichen komplett falsch in die DB einfügt... dass dann die, richtig, eingefügten Zeichen von PMA auf der Website kaputt dargestellt werden ist nicht weiter verwunderlich... und das die, kaputten, Zeichen beim, kaputten, Auslesen wieder richtig erscheinen ist da auch nicht weiter verwunderlich...

 
Slava
12-03-2007, 20:41 
 
Original geschrieben von ghostgambler
:confused:


Ich wette 50 Cent, dass PMA vollkommen korrekt funktioniert, der TO nur einfach die Zeichen komplett falsch in die DB einfügt... dass dann die, richtig,
Ich hasse es Unrecht zu haben!
Wohin soll ich 50 Cent überweisen?:D

@nobody2
mysql_query("SET NAMES 'utf8'") or die(mysql_error());
als erste Mysql abfrage ausführen.
die Daten,die schon gespechert sind, muss man natürlich verändern.
Ich habe leider kein befehl dafür gefunden, aber wenn man alte daten ohne SET NAMES in eine datei schreibt.
und danach mit SET NAMES wieder einfügt, dann muss die problem gelöst werden.

1) in datei einfügen

$fp=fopen("dateiname.txt","w");
$q=mysql_query("SELECT * FROM tablename ")
or die(mysql_error());

while($zeile=mysql_fetch_row($q)){
fwrite($fp,implode("+#-#",$zeile)."\r\n" );
}

2)
jetzt die tabelle leeren (vorher aber besser ein backup erstellen), das kannst du auch mit phpmyadmin machen

3)wieder einfügen, aber jetzt mit SET names

mysql_query("SET NAMES 'utf8'")or die(mysql_error());
$fp=fopen("dateiname.txt","r");
while (!feof($fp)) {
$buffer = trim(fgets($fp, 8000));
if($buffer>20)
mysql_query("insert into tablename (`felderliste`) values('".implode("','",explode("+#-#",$buffer))."')");
echo mysql_error()."<br />";
}

 
nobody2
15-03-2007, 19:21 
 
Hallo!
Danke schonmal.
Ok, ich habe jetzt als erstes
mysql_query("SET NAMES 'utf8'") or die(mysql_error());
ausgefürht.
Danach habe ich einen Testeintrag eingefüght.
Die Umlaute werden jetzt im PHPMyAdmin korrekt dargestellt, allerdings auf der Website nicht.
Was ist mit TO gemeint?

 
TobiaZ
15-03-2007, 19:27 
 
thread opener

 
ghostgambler
15-03-2007, 22:55 
 
Wird die Website auch als UTF8 ausgeliefert?!

 
nobody2
15-03-2007, 23:13 
 
Ja, ich habe nur vergessen, dass ich auch beim SELECT Befehl das SET NAMES angebe. Mit SET NAMES gehts jetzt. thx


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:26 Uhr.