umlaut fehler

Begonnen von simba, 30 November 2007, 20:34:20

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

simba

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


_Gerry_

CMS-Version: pragmaMx 0.1.11, 1.33.2.12.2.9/2009-05-10   
PHP-Version: 5.2.0-8+etch5~pu1
MySQL-Version: 5.0.32-Debian_7etch1
Server-Version: Apache/2.2.3 (Debian) mod_ssl/2.2.3 OpenSSL/0.9.8c

simba

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

_Gerry_

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
CMS-Version: pragmaMx 0.1.11, 1.33.2.12.2.9/2009-05-10   
PHP-Version: 5.2.0-8+etch5~pu1
MySQL-Version: 5.0.32-Debian_7etch1
Server-Version: Apache/2.2.3 (Debian) mod_ssl/2.2.3 OpenSSL/0.9.8c

Sitki

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!
viele Grüße

Kein Support über PN, Mail oder Messenger!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!

simba

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

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

Sitki

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.
viele Grüße

Kein Support über PN, Mail oder Messenger!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!

Biker

Detektei Martin - wir bringen Licht ins Dunkle!

Biker

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('&nbsp;&nbsp;'.$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('&nbsp;&nbsp;&nbsp;&nbsp;'.$i.'. '.$sql."\r\n");
        }else{
          print('&nbsp;&nbsp;&nbsp;&nbsp;'.$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 !
Detektei Martin - wir bringen Licht ins Dunkle!