Announcement

Collapse
No announcement yet.

Umlaute werden falsch dargestellt

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Umlaute werden falsch dargestellt

    Nachdem beim Upgrade auf vB 5 sich mal wieder alles mit Hnden und Fen gewehrt hat, hatte ich als letztes Problem berall Umlaute-Fehler im Forum und Backend.

    http://sebastianviereck.de/mysql-php...chen-utf8-iso/

    Code:
     '¦, '¨, '?, '´, '¸, 'À, 'Á, 'Â, 'Ã, 'Ä, 'Å, 'Æ, 'Ç, 'È, 'É, 'Ê, 'Ë, 'Ì, 'Í, 'Î, 'Ï, 'Ñ, 'Ò, 'Ó, 'Ô, 'Õ, 'Ö, 'Ø, 'Ù, 'Ú, 'Û, 'Ü, 'Ý, 'Þ, 'ß, ' , 'á, 'â, 'ã, 'ä, 'å, 'æ, 'ç, 'è, 'é, 'ê, 'ë, 'ì, '*, 'î, 'ï, 'ð, 'ñ, 'ò, 'ó, 'ô, 'õ, 'ö, 'ø, 'ù, 'ú, 'û, 'ý, 'þ, 'ÿ
    Wer auch von dem Problem betroffen ist. Es gibt ein schnes Skript auf https://www.all4hardware4u.de/progra...zeichen-utf-8/

    Nach der Anpassung des Passworts usw. kann man es ausfhren um die Zeichen in der DB zu korrigieren.

    Wichtig! Danach msst ihr noch einmal das upgrade.php Skript von vBulletin aufrufen.

    Code:
     <!DOCTYPE html>
      <html>
      <head>
      <meta charset="UTF-8" />
      </head>
      <body>
      <?php
      $string = utf8_encode($string);
      /* internes character encoding auf UTF-8 setzen */
      mb_internal_encoding("UTF-8");
    
      /* aktuelles internes character encoding anzeigen */
      echo mb_internal_encoding();
      $db_host   = "localhost";         // Host der Datenbank
      $db_user   = "benutzer";          // Datenbank-User
      $db_pass   = "passwort";          // Datenbank-Passwort
      $db_name   = "datenbank";         // Name der Datenbank
    
      $db = mysql_connect($db_host,$db_user,$db_pass) or die(mysql_error());
      mysql_query("SET NAMES 'utf8'");
      mysql_select_db($db_name,$db) or die(mysql_error());
    
      $show="SHOW TABLES FROM ".$db_name;
      $ergebnis=mysql_query($show) ;
    
      $qry = "Tables_in_".$db_name."";
    
      $all_affected_rows = 0;     //Variable zur Zhlung aller betroffenen Datenstze
    
      /* Ersetze diese Zeichen (beliebig erweiterbar) */
      $array_von  = array('ü', 'ä', 'ö', 'Ö', 'ß', ' ', 'á', 'â', 'ã', 'ù', 'ú', 'û', 'Ù', 'Ú', 'Û', 'Ü', 'ò', 'ó', 'ô', 'è', 'é', 'ê', 'ë', 'À', 'Â', 'Ã', 'Ä', 'Å', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Î', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ø', 'å', 'æ', 'ç', 'ì', '*', 'î', 'ï', 'ð', 'ñ', 'õ', 'ø', 'ý', 'ÿ', '€');
    
      /* zu diese Zeichen (beliebig erweiterbar) */
      $array_nach = array('', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '&#255;', '');
    
      $zaehlen=$show;
      $ergebnis_count=mysql_query($zaehlen);
      $num_rows = mysql_num_rows($ergebnis_count);
      echo "<br>Anzahl der Tabellen: ".$num_rows."<br>";
    
      $anzahl=0;
    
      while($show = mysql_fetch_object($ergebnis))
      {
        $anzahl++;
        echo "<br>".$anzahl.". Tabelle: ".$show->$qry;
        $db_table=$show->$qry;
    
        $query  = "SHOW COLUMNS FROM `".$db_table."`";     // Query zur Ermittlung der Tabellenfelder
        $result = mysql_query($query);                     // Query ausfhren und Ergebnis in $result schreiben
        if (mysql_errno() != 0){ echo mysql_error(); }     // Gab es bei der Abfrage einen Fehler? Wenn ja, dann ausgeben
        else { $num = mysql_numrows($result); }            // Ermitteln wie viele Datenstze gefunden wurden
        echo "<br>Anzahl der Spalten: ".$num."<br>";
    
         if ($num > 0){
             $query_update  = "UPDATE ".$db_table." SET ";        // Generiere Update-Query
              for($i=0;$i<$num;$i++){                             // Durchlaufe Feldnamen
                  $fieldname     = mysql_result($result,$i,"Field");
                  for($x=0;$x<sizeof($array_von);$x++){           // Durchlaufe Ersetzungen
      $query_update .= "`".$fieldname."`=REPLACE(".$fieldname.", '".$array_von[$x]."', '".$array_nach[$x]."')";
                          if ((sizeof($array_von)-1) != $x){
                              $query_update .= ", ";
                          }
                          else if (($num-1) != $i){
                                     $query_update .= ", ";
                          }
                          else if (($num-1) == $i){
                                     $query_update .= ";";
                          }
                  }
              }
                  mysql_query($query_update);
                  if (mysql_errno() != 0){ echo mysql_error(); }
    
                  else {
                  echo "------------- OK ------------- \n Betroffene Datenstze: ".mysql_affected_rows()."\n------------------------------ \n "; $all_affected_rows=$all_affected_rows+mysql_affected_rows(); }
      }
      }
      echo "------------- OK ------------- \n insgesamt betroffene Datenstze: ".$all_affected_rows."\n------------------------------ \n ";
      ?>
      </body>
      </html>
    Last edited by StarShaper; Sun 10th Feb '19, 11:02am.

  • #2
    Danke fr diesen Tipp! Ich hatte auch schon mal ein Add-on mit einem hnlichen Script um dieses Problem zu lsen. Das Problem mit den Phrasen (anderes Ticket) sollte sich erledigen wenn Du die deutschen Phrasen einliest (diese knnen im Member-Bereich) heruntergeladen werden.
    vBulletin-Forum.de closed!

    Comment

    widgetinstance 262 (Related Topics) skipped due to lack of content & hide_module_if_empty option.
    Working...
    X