Backupscript 1.7-2.2 Kodierung (German / Deutsch)

by Irene König @, Monday, May 28, 2018, 10:43 (21 days ago)

Hallo zusammen!

Ich überlege, mein Forum von der 1er- auf die 2er-Version umzustellen. Es läuft seit 2006 ohne Probleme und war von Anfang an UTF8 kodiert, da auch u.a. Russisch geschrieben wird. Das Script hatte ich dementsprechend angepasst. Ich bin in PHP allerdings nicht versiert, muss ich dazusagen.

Nun mein Problem: das Backupscript geht ja davon aus, dass das 1.7-Forum ISO-8859-1 kodiert ist und kodiert also in UTF8 um. Nicht nur, dass ich das nicht brauche, es zerschießt mir logischerweise die kyrillischen Buchstaben und ersetzt sie mit einem Fragezeichen.

Könnte mir bitte jemand einen Hinweis geben, wie ich die nicht benötigte Umkodierung "abschalten" kann? Ich poste unten den entsprechenden Code-Schnippsel aus dem Script.

Backup und Einspielen in die Version 2.2 hat ansonsten problemlos geklappt, danke dafür! Auf andere Fehler habe ich noch nicht geschaut, das Problem mit der unerwünschten Umkodierung ist vorrangig.

 
class Backup 
 {
  var $start_time;
  var $check_time;
  var $file;
  var $dump = '';
  var $queries = 0;
  var $max_queries = 300;
  var $errors = Array();
 
  function Backup()
   {
    @set_time_limit(30);
    $this->start_time = time();
    $this->check_time = $this->start_time;
   }
 
  function set_max_queries($max_queries)
   {
    $this->max_queries = $max_queries;
   }
 
  function set_file($file)
   {
    $this->file = $file;
   }
 
  function assign($data)
   {
    $this->dump .= utf8_encode($data);
    $this->queries++;
 
    $now = time();
    if(($now-25) >= $this->check_time)
     {
      $this->check_time = $now;
      @set_time_limit(30);
     }
 
    if($this->queries >= $this->max_queries)
     {
      // buffer:
      $this->save();
      $this->queries = 0;
     } 
   }
 
  function save()
   {
    if($this->dump != '')
     {
      if(empty($this->file))
       {
        $this->file = 'mlf_1.7_backup_'.date("YmdHis").'.sql';
       }
      if($handle = fopen($this->file, 'a+'))
       {
        #flock($fp, 2);
        fwrite($handle, $this->dump);
        #flock($fp, 3);
        fclose($handle);
        $this->dump = '';
       } 
      else
       {
        $this->errors[] = 'Could not write backup file!';
       }     
     }
    if(empty($errors))
     {
      return true;
     }
    else
     {
      return false;
     }
   }
 } 
 
 
Avatar

Backupscript 1.7-2.2 Kodierung

by Auge ⌂ @, Monday, May 28, 2018, 12:56 (21 days ago) @ Irene König

Hallo Irene

Ich überlege, mein Forum von der 1er- auf die 2er-Version umzustellen. …

… mein Problem: das Backupscript geht ja davon aus, dass das 1.7-Forum ISO-8859-1 kodiert ist und kodiert also in UTF8 um. Nicht nur, dass ich das nicht brauche, es zerschießt mir logischerweise die kyrillischen Buchstaben und ersetzt sie mit einem Fragezeichen.

Verstehe ich den gezeigten Code richtig, wenn ich davon ausgehe, dass die Datenbank ausgelesen und ein Backup als Textdatei abgelegt wird, das dann händisch in die neue Datenbank eingespielt werden kann?

Könnte mir bitte jemand einen Hinweis geben, wie ich die nicht benötigte Umkodierung "abschalten" kann?

 
class Backup 
 {
 // irgendwelcher Code, dann
  function assign($data)
   {
    $this->dump .= utf8_encode($data);
    $this->queries++;
 
    $now = time();
    if(($now-25) >= $this->check_time)
     {
      $this->check_time = $now;
      @set_time_limit(30);
     }
 
    if($this->queries >= $this->max_queries)
     {
      // buffer:
      $this->save();
      $this->queries = 0;
     } 
   }
 // weiterer Code
 }
 

Die einzige Stelle in dem gezeigten Code, an der eine Umkodierung stattfindet, ist die Zeile $this->dump .= utf8_encode($data);, gleich zu Beginn der Funktion assign($data).

Bitte ersetze den Code der Zeile mit $this->dump .= $data;, der die Daten ohne die unnötige Umkodierung an den Dump anhängt. Schaue hernach in die Datei und teile uns bitte mit, ob die Änderung funktioniert hat.

Tschö, Auge

--
Trenne niemals Müll, denn er hat nur eine Silbe!

Backupscript 1.7-2.2 Kodierung

by Irene König @, Monday, May 28, 2018, 18:17 (21 days ago) @ Auge

Hallo und danke, dass du dir das mal angeschaut hast. Der gezeigte Code stammt aus dem Backupscript von Alex, das ich mir vor Jahren abgespeichert hatte. Es ist auf seiner Website nicht mehr zu finden, aber noch über die Waybackmachine. https://web.archive.org/web/20100704060157/http://mylittleforum.net:80/documentation/update_from_version_1.7_to_2.2

Verstehe ich den gezeigten Code richtig, wenn ich davon ausgehe, dass die Datenbank ausgelesen und ein Backup als Textdatei abgelegt wird, das dann händisch in die neue Datenbank eingespielt werden kann?

Ja, mit Hilfe der backup.php wird die Datenbank der 1er-Version ausgelesen und der veränderten Datenbankstruktur der 2er Version angepaßt. Die ausgegeben SQL-Datei kann man dann in eine 2er-Installation einspielen, was ja auch funktioniert hat. Der für mich relevante Fehler mit der Umkodierung entsteht vorher.

Bitte ersetze den Code der Zeile mit $this->dump .= $data;, der die Daten ohne die unnötige Umkodierung an den Dump anhängt. Schaue hernach in die Datei und teile uns bitte mit, ob die Änderung funktioniert hat.

Ich habe es ausprobiert und es hat nicht das gewünschte Ergebnis erbracht. Leider erhalte ich nun im Ergebnis eine SQL-Datei, die in ANSI kodiert ist. Für mich nicht zu gebrauchen.

Irene

Avatar

Backupscript 1.7-2.2 Kodierung

by Auge ⌂ @, Monday, May 28, 2018, 19:41 (20 days ago) @ Irene König

Hallo

Der gezeigte Code stammt aus dem Backupscript von Alex, das ich mir vor Jahren abgespeichert hatte. Es ist auf seiner Website nicht mehr zu finden, aber noch über die Waybackmachine. https://web.archive.org/web/20100704060157/http://mylittleforum.net:80/documentation/update_from_version_1.7_to_2.2

Ah ja, ich habe mir das Skript auch einmal heruntergeladen.

Verstehe ich den gezeigten Code richtig, wenn ich davon ausgehe, dass die Datenbank ausgelesen und ein Backup als Textdatei abgelegt wird, das dann händisch in die neue Datenbank eingespielt werden kann?


Ja, mit Hilfe der backup.php wird die Datenbank der 1er-Version ausgelesen und der veränderten Datenbankstruktur der 2er Version angepaßt. Die ausgegeben SQL-Datei kann man dann in eine 2er-Installation einspielen, was ja auch funktioniert hat. Der für mich relevante Fehler mit der Umkodierung entsteht vorher.

Ich habe mal über das Skript geschaut (ohne genaues Studium). Bei der Herstellung der Verbindung wird keine Kodierung ausgehandelt, was vermutlich der Grund dafür ist, dass die Ausgabe aus Grumpel besteht.

Bitte ersetze den Code der Zeile mit $this->dump .= $data;, der die Daten ohne die unnötige Umkodierung an den Dump anhängt. Schaue hernach in die Datei und teile uns bitte mit, ob die Änderung funktioniert hat.


Ich habe es ausprobiert und es hat nicht das gewünschte Ergebnis erbracht.

Schade, war ein Schuss ins Blaue.

Leider erhalte ich nun im Ergebnis eine SQL-Datei, die in ANSI kodiert ist. Für mich nicht zu gebrauchen.

Kannst du bitte mal ein Beispiel zeigen, wie ein Satz in kyrillischer Schrift aussehen soll und wie das kaputte Backup des gleichen Satzes aussieht? Danke.

Tschö, Auge

--
Trenne niemals Müll, denn er hat nur eine Silbe!

Backupscript 1.7-2.2 Kodierung

by Irene König @, Tuesday, May 29, 2018, 05:59 (20 days ago) @ Auge

Bei der Herstellung der Verbindung wird keine Kodierung ausgehandelt, was vermutlich der Grund dafür ist, dass die Ausgabe aus Grumpel besteht.

Danke dir, genau das war's! :ok:
Ich habe jetzt in das Backup-Script bei der DB-Verbindung folgendes eingefügt:

@mysql_query('SET NAMES utf8');

Und siehe da, das SQL-Backup-File ist wie gewünscht UTF-8 kodiert. Die erste Hürde ist damit genommen und ich hoffe, die weiteren Updates laufen ohne Pannen.

Schönen Tag! Irene

Avatar

Backupscript 1.7-2.2 Kodierung

by Auge ⌂ @, Tuesday, May 29, 2018, 11:27 (20 days ago) @ Irene König

Hallo

Bei der Herstellung der Verbindung wird keine Kodierung ausgehandelt …


Danke dir, genau das war's! :ok:

Schön. :-)

… siehe da, das SQL-Backup-File ist wie gewünscht UTF-8 kodiert. Die erste Hürde ist damit genommen und ich hoffe, die weiteren Updates laufen ohne Pannen.

Bitte berichte über deinen Umzug. Gerne auch über die Zwischenschritte, die du eventuell gehen musst(est).

Tschö, Auge

--
Trenne niemals Müll, denn er hat nur eine Silbe!

RSS Feed of thread
powered by my little forum