Hallo
ich bins mal wieder
ich hab mir alles durchgelesen bez. der Umlautfehler
muss sagen alles boehmische Doerfer fuer mich :red:
also was muss ich tun um dieses Prob. zuloesen :quest
Gruss
SIMBA
Gegenfrage, was hast du bereits gemacht um das Problem zu lösen?
http://www.pragmamx.org/Forum-topic-20987-start-msg142447.html#msg142447
Zitat von: _Gerry_ am 30 November 2007, 20:45:59
Gegenfrage, was hast du bereits gemacht um das Problem zu lösen?
http://www.pragmamx.org/Forum-topic-20987-start-msg142447.html#msg142447
Noch nichts da ich pragmaMX neuling bin
gruss
simba
Dann versuch einmal die bereits hier im Forum veröffentlichen Lösungsansätze, wen auch die alle nicht fruchten, dann müssen wir (jemand der Ahnung davon hat :red:) eine andere Lösung finden.
Gerry
Hi :),
offensichtlich ist die Datenbank-Tabellenkollation nicht korrekt. D.h. Umlaute werden nicht richtig übernommen bzw. ausgegeben (UTF-8-> äöü = äöü).
Eine Möglichkeit wäre, die bestehende DB zu exportieren, mit der korrekten Kollation zu formatieren (zb. In latin1_german1_ci, latin1_german2_ci oder latin1_swedish_ci) und den Dump wieder in die Datenbank zu importieren. Die Datenbank ist vor dem Einspielen des Dumps auch auf die entsprechende Tabellenkollation einzustellen.
Sicher dir auf alle Fälle vorher eine unbearbeitete DB ab!
Zitat von: _Gerry_ am 30 November 2007, 22:41:03
Dann versuch einmal die bereits hier im Forum veröffentlichen Lösungsansätze, wen auch die alle nicht fruchten, dann müssen wir (jemand der Ahnung davon hat :red:) eine andere Lösung finden.
Gerry
Danke, ok ich werds versuchen
Gruss
SIMBA
Zitat von: Atahan am 30 November 2007, 23:31:58
Hi :),
offensichtlich ist die Datenbank-Tabellenkollation nicht korrekt. D.h. Umlaute werden nicht richtig übernommen bzw. ausgegeben (UTF-8-> äöü = äöü).
Eine Möglichkeit wäre, die bestehende DB zu exportieren, mit der korrekten Kollation zu formatieren (zb. In latin1_german1_ci, latin1_german2_ci oder latin1_swedish_ci) und den Dump wieder in die Datenbank zu importieren. Die Datenbank ist vor dem Einspielen des Dumps auch auf die entsprechende Tabellenkollation einzustellen.
Sicher dir auf alle Fälle vorher eine unbearbeitete DB ab!
Hallo
Danke fuer die Hilfe, meine DB ist mit latin_swedish_ci formatiert
soll ich es nun mit latin1_german1_ci formatieren :quest
gruss
Simba
Hi :)
handelt es sich hierbei um eine Neuinstallation oder wurde eine bestehende DB übernommen, denn mit latin1_swedish_ci sollte es eigentlich funktionieren bzw. von der Umlautdarstellung ist eher von einer UTF-8 Unicode Tabellenkollation auszugehen. Schaue mal bitte direkt in den SQL Dump, welche Tabellenkollation darin eingestellt ist.
Vielleicht hilft Dir das hier weiter:
http://www.phpforum.de/archiv_67131_Umlaute@an@DB@bergeben_anzeigen.html
Gruß
Bernd
Ich hab da noch zwei Scripte im Netz gefunden, was Dir auch behilflich sein könnte:
1. Bash-Script
ZitatWer viele Tabellen hat, kann auch folgendes Bash Script nutzen. Es werden alle Kollationen der Tabellen sowie der Datenbank auf utf8_unicode_ci gesetzt. Danach wird die Datenbank gedumpt und alle Zeichen mit Iconv auf UTF8 konvertiert. Danach wird die Datenbank wieder eingespielt.
#!/bin/bash
#
# MySQL UTF8 Converter by Monotek
#
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
# config
mysql_user="otrs"
mysql_pass="pass"
mysql_db="otrs"
mysql_opt="--opt --allow-keywords"
old_col="ISO8859-1"
tmp_dir="/tmp"
#script
echo "Dump database"
mysqldump ${mysql_opt} -u ${mysql_user} -p${mysql_pass} -hlocalhost ${mysql_db} | iconv -f ${old_col} -t UTF-8 | sed s'/ENGINE=MyISAM DEFAULT CHARSET=.*;/ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;/g' > ${tmp_dir}/${mysql_db}_utf.sql
echo "Import converted database"
( echo "DROP DATABASE ${mysql_db};"
echo "CREATE DATABASE ${mysql_db};"
echo "ALTER DATABASE ${mysql_db} DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;"
echo "USE ${mysql_db};"
echo "SOURCE ${tmp_dir}/${mysql_db}_utf.sql;"
) | mysql -u ${mysql_user} -p${mysql_pass} -hlocalhost
echo "Deleting temporary files"
rm -f ${tmp_dir}/${mysql_db}_utf.sql
echo "Done"
2.
ZitatBeim Bash Script werden leider nur die Standardwerte der Datenbank und Tabellen geändert.
Die Spalten bleiben jedoch wie vorher, was entfällt, wenn man das ganze neu importiert.
Falls man die Zeichenkonvertierung nicht braucht (z.B. beim wechsel von latin1_swedish auf latin1_german, wobei trotzdem schon deutsche Zeichen eingetragen wurden), kann man das folgende PHP Script benutzen, welches ich geschrieben habe.
Vorteile:
- Schneller, da das "dumpen" entfällt
Nachteile:
- Keine Zeichenkonvertierung
Sonstiges:
- Schrittweise, es werden nicht alle Queries in einem Durchgang gemacht (nötig durch die Benutzung von PHP)
- Ob die Benutzung von PHP ein Vor- oder Nachteil ist, muss jeder selbst entscheiden
Wenn jemand langeweile hat, kann er ja noch 'ne Überprüfung einbauen, ob das "nächste Seite" angezeigt werden muss. Dazu müsste man jedoch die Zählweise etwas ändern, da sie ein wenig "schlampig" ist
Aber sie erfüllt ihren Zweck.
<?
#########################################################################
#########################################################################
## ##
## Script coded by Eric Reiche ##
## ##
## Version: 0.2 / 2006-08-16 17:35 GMT + 100 ##
## Version 0.2 contains bugfixes ##
## ##
## Inspired by serversupportforum.de user monotek ##
## ( http://www.serversupportforum.de/forum/sql/ \ ##
## 9279-kollation-von-tabellen-aendern.html#post67293 ) ##
## [Check link for bashscript] ##
## ##
## Web: http://www.ericreiche.net || Mail: webmaster@ericreiche.net ##
## ##
## You can spread this script, until you don't touch this copymark ##
## ##
#########################################################################
#########################################################################
//Config:
$mysqlserver = 'localhost'; //Host
$mysqluser = 'root'; //User [It's recomment to use root]
$mysqlpw = 'passwort'; //Password
$mysqldb = 'datenbank'; //Database
$stepping = 100; //Queries per Page
$tabletoskip = 'really_big_table'; //If you have a really big table, you can enter it here,
//it will be skipped, to prevent a script abort
$collation = 'latin1_german2_ci';
$character_set = 'latin1';
//End Config
#######################################################################
# Do not change anything from here, until you know what you're doing #
#######################################################################
if(isset($_GET['start']) && is_numeric($_GET['start'])){
$start = $_GET['start'];
if($start > 0){
$start = $start * $stepping;
}
}else{
$start = 0;
}
//mysql connect
@mysql_connect($mysqlserver, $mysqluser, $mysqlpw) OR die("No Conncection to Server. Report: :".mysql_error());
mysql_select_db($mysqldb) OR die("couldn't select database, Report: ".mysql_error());
unset($mysqlserver);
unset($mysqluser);
unset($mysqlpw);
$i = 0;
print('<pre>');
if($start == 0){
$sql = 'ALTER DATABASE '.$mysqldb.' DEFAULT CHARACTER SET '.$character_set.' COLLATE '.$collation.";\r\n";
mysql_query($sql);
print($sql);
}
$sql = 'Show tables;';
$result1 = mysql_query($sql);
while($tables = mysql_fetch_assoc($result1)){
if($start == 0){
$sql = 'ALTER TABLE '.$tables['Tables_in_'.$mysqldb].' DEFAULT CHARACTER SET '.$character_set.' COLLATE '.$collation.";\r\n";
mysql_query($sql);
print(' '.$sql);
}
$sql = 'Show columns FROM '.$tables['Tables_in_'.$mysqldb];
$result2 = mysql_query($sql);
while($columns = mysql_fetch_assoc($result2)){
if(substr_count($columns['Type'], 'varchar') || substr_count($columns['Type'], 'text')){
$i++;
if($i >= $start && $i < ($start + $stepping)){
$sql = 'ALTER TABLE '.$tables['Tables_in_'.$mysqldb].' CHANGE '.$columns['Field'].' '.$columns['Field'].' '.$columns['Type'].' CHARACTER SET '.$character_set.' COLLATE '.$collation.';';
if($tabletoskip != $tables['Tables_in_'.$mysqldb]){
mysql_query($sql);
print(' '.$i.'. '.$sql."\r\n");
}else{
print(' '.$i.'. <b>SKIPPED</b>: '.$sql."\r\n");
}
}
}
}
}
print('</pre>');
print('<a href="'.$_SERVER['PHP_SELF'].'?start='.($_GET['start'] + 1).'">Weiter...</a>');
?>
Fundstelle: http://serversupportforum.de/forum/sql/9279-kollation-von-tabellen-ndern.html
Gruß
Bernd
...ich habe übrigens seit einiger Zeit (Umstellung von 1&1) das gleiche Problem....utf-8 !