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

  • winter
    hat ein Thema erstellt Umlaut in DB.

    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?

  • winter
    antwortet
    Danke, das funktioniert!

    Einen Kommentar schreiben:


  • BlackScorp
    antwortet
    man ey wieso nutzen die leute alte PHP version?..

    PHP-Code:
    $encodedData = array(); 
    eben..

    Einen Kommentar schreiben:


  • winter
    antwortet
    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 =[]

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • BlackScorp
    antwortet
    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);

    Einen Kommentar schreiben:


  • winter
    antwortet
    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!

    Einen Kommentar schreiben:


  • BlackScorp
    antwortet
    PHP-Code:
    $rows[] = fixEncoding($data); 

    Einen Kommentar schreiben:


  • winter
    antwortet
    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!

    Einen Kommentar schreiben:


  • trollface
    antwortet
    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

    Einen Kommentar schreiben:

Lädt...
X