Ankündigung

Einklappen
Keine Ankündigung bisher.

Umlaut in DB

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Umlaut in DB

    Hallo zusammen
    Ich habe folgendes Problem:
    Mein csv, das ich in eine Datenbank einlese, ist ISO-Latin1 formatiert.
    Wenn ich es von Hand umwandle in UTF8 funktioniert der Import in DB einwandfrei.
    Ich kann es aber nicht von Hand umwandeln. Das müsste per php-Code automatisch geschehen. Wie müsste ich das anstellen?

    Ich habe auch versucht das Feld in der Datenbank von utf8-unicode_ci zu latin1_general_ci oder latin1_german1_ci zu verstellen. Nützt leider alles nichts. Unter utf8_generel werden Umlaute abgeschnitten, unter latin1.... kommen falsche Zeichen in DB

    Kann mir jemand helfen?


  • #2
    Zitat von winter Beitrag anzeigen
    Ich habe auch versucht das Feld in der Datenbank von utf8-unicode_ci zu latin1_general_ci oder latin1_german1_ci zu verstellen.
    Das ist auch eine schlechte Idee.

    utf8_encode() ist dein Freund.
    http://php.net/utf8-encode
    Windows Server gehören NICHT ins Internet!

    Dildo? Dildo!

    Kommentar


    • #3
      ok, danke.
      ich verstehe das aber noch nicht ganz.
      PHP-Code:
      <?php 
      // Fixes the encoding to uf8 
      function fixEncoding($in_str

        
      $cur_encoding mb_detect_encoding($in_str) ; 
        if(
      $cur_encoding == "UTF-8" && mb_check_encoding($in_str,"UTF-8")) 
          return 
      $in_str
        else 
          return 
      utf8_encode($in_str); 
      // fixEncoding 
      ?>
      Nun verstehe ich nicht wie ich das in meinen Code einbauen kann:
      PHP-Code:
      if (($handle fopen("data.csv""r")) !== FALSE) {
              
      fgets($handle);   
          while ((
      $data fgetcsv($handle1000",")) !== FALSE
              
                {
              
      $rows[] = $data;
          }
                      
      fclose($handle);
                      }     
             foreach (
      $rows as $key) { 
      Wie muss ich das nun zusammenfügen? Danke für eure Hilfe!

      Kommentar


      • #4
        PHP-Code:
        $rows[] = fixEncoding($data); 
        apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp | Mein Youtube PHP Kanal: https://www.youtube.com/c/VitalijMik

        Kommentar


        • #5
          Danke habe das nun so versucht:
          PHP-Code:
           // Fixes the encoding to uf8 
          function fixEncoding($handle

            
          $cur_encoding mb_detect_encoding($handle) ; 
            if(
          $cur_encoding == "UTF-8" && mb_check_encoding($handle,"UTF-8")) 
              return 
          $handle
            else 
              return 
          utf8_encode($handle); 

          if ((
          $handle fopen("data.csv""r")) !== FALSE) {
                            while ((
          $data fgetcsv($handle1000",")) !== FALSE
                  
                    {
                  
          $rows[] = $data;
                  
          $rows[] = fixEncoding($data);  
              }
                          
          fclose($handle);
                          } 
          aber leider erscheint Fehlermeldung
          mb_detect_encoding() expects parameter 1 to be string, array given
          utf8_encode() expects parameter 1 to be string, array given

          Wie muss ich das fixen? Vielen Dank!

          Kommentar


          • #6
            PHP-Code:
            if (($handle fopen("data.csv""r")) !== false) {
                while ((
            $data fgetcsv($handle1000",")) !== false) {
                    
            $encodedData = [];
                    foreach(
            $data as $rawData){
                        
            $encodedData[]=fixEncoding($rawData);
                    }
                    
            $rows[] = $encodedData;
                }
                
            fclose($handle);

            apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp | Mein Youtube PHP Kanal: https://www.youtube.com/c/VitalijMik

            Kommentar


            • #7
              mb_detect_encoding() taugt nix, ein Latin-1 Ä/Ö/Ü werden so als UTF-8 erkannt.

              Kommentar


              • #8
                Zitat von BlackScorp Beitrag anzeigen
                PHP-Code:
                if (($handle fopen("data.csv""r")) !== false) {
                    while ((
                $data fgetcsv($handle1000",")) !== false) {
                        
                $encodedData = [];
                        foreach(
                $data as $rawData){
                            
                $encodedData[]=fixEncoding($rawData);
                        }
                        
                $rows[] = $encodedData;
                    }
                    
                fclose($handle);

                Habe das versucht. Es kommt aber Fehlermeldung:
                syntax error, unexpected '[' in
                das ist auf der Linie mit $encodedData =[]

                Kommentar


                • #9
                  man ey wieso nutzen die leute alte PHP version?..

                  PHP-Code:
                  $encodedData = array(); 
                  eben..
                  apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp | Mein Youtube PHP Kanal: https://www.youtube.com/c/VitalijMik

                  Kommentar


                  • #10
                    Danke, das funktioniert!

                    Kommentar

                    Lädt...
                    X