Utf-8 geht nicht

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

  • Utf-8 geht nicht

    Was ist das ?
    Das ist ein script das über die google maps api zu einer Koodinate informationen abfragt und in einer Datenbank einträgt.

    Mein Problem:
    Da sind immer Zeichensatz fehler in der Datenbank aber ich hab eigentlich alles mit utf-8 kodiert ! auch die Datenbank(die Tabellen).

    Hoffe auf schnelle hilfe

    /einfacheruser


    PHP-Code:
    <?php 
    header
    ("Content-Type: text/html; charset=utf-8");
    include (
    "../conf.php");
    include (
    "../db.php");
    include (
    "../functions.php");
    //require( 'C:\xampplite\htdocs\blog\wp-load.php' );
    ?>
    <script src="http://code.jquery.com/jquery-latest.min.js"></script>

    <div class="proc" style=" font-size: 30px;"></div>
    <div class="prozent">0%</div>
    <div style="width:100%;height:100%;overflow:auto;">
    <?php
        $result 
    GetPlaces();
        echo 
    '<script> var now = 0; var tick = '100 $result->num_rows.'; </script>';
        
    $i 0;
        
    $null 0;
        while (
    $row $result->fetch_assoc()) {
            
    $i++;
            echo 
    $row['Name'].'<br>';
            
    $json loadFile('http://maps.google.com/maps/geo?output=json&oe=utf-8&ll='.$row['x'].'%2C'.$row['y'].'&hl=en');
            
    $orginal_data $json;
            
    $json json_decode($jsontrue);
            echo 
    '<code>';
            if (
    $json) {
            
    $sqlinsert '';
            
            if (
    $json['Placemark'][0]['address']) {
                
    $sqlinsert $sqlinsert."`adress` = '".$json['Placemark'][0]['address']."',"
                
            }

            if (
    $json['Placemark'][0]['AddressDetails']['Country']['CountryNameCode']) {
                
    $sqlinsert$sqlinsert."`CountryNameCode` = '".$json['Placemark'][0]['AddressDetails']['Country']['CountryNameCode']."',"
                
            } 
            if (
    $json['Placemark'][0]['AddressDetails']['Country']['CountryName']) {
                
    $sqlinsert$sqlinsert."`CountryName` = '".$json['Placemark'][0]['AddressDetails']['Country']['CountryName']."',"
                
            } 
            
    $sql ="
            UPDATE `kitereview`.`places` SET
            "
    .$sqlinsert."
            `ID` = "
    .$row['ID']."
            WHERE `places`.`ID` ="
    .$row['ID'].";";
            
    $db->query($sql);
            echo 
    '<br><a href="http://maps.google.com/maps/geo?output=json&oe=utf-8&ll='.$row['x'].'%2C'.$row['y'].'&hl=de">Json-data</a>';
            
    //var_dump($json);
            
    $null++;
            }else {
                echo 
    'keine daten vorhanden';
                echo 
    $orginal_data;
            }
            echo 
    '</code>';
            echo 
    '<br>';
            echo 
    '<br>';
            
    /*
            foreach ($json as $index => $value)
            {
                var_dump ($json[$index]);
                
            }
            */
            
            
    ?>
                <script>
                    $('.proc').html($('.proc').html() + '|')
                    now = now + tick;
                    $('.prozent').html(Math.round(now) + '%')
                </script>
            <?php
        
    }
    ?>
    <script>
        alert('Query komplett ! \nes wurden <?php echo $null?>/<?php echo $result->num_rows?> Datensätze verarbeitet');
    </script>
    Zuletzt geändert von einfacheruser; 13.06.2010, 22:07.

  • #2
    Kodierung der Datenbankverbindung auch explizit auf UTF-8 gesetzt?
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      wo denn ?
      *edit*
      ich habs mysql_set_charset('utf8'); ich probiers mal aus

      Kommentar


      • #4
        PHP-Code:
        <?php
            $db 
        = @new MySQLi($db_host$db_user$db_pass$db_db);
            if (
        mysqli_connect_errno()) {
                die(
        'Konnte keine Verbindung zu Datenbank aufbauen, MySQL meldete: '.mysqli_connect_error());
            }
            
        mysql_set_charset('utf8',$db);
        ?>
        giebt folgenden Fehler aus:


        Warning: mysql_set_charset() expects parameter 2 to be resource, object given in db.php on line 6

        ich hab doch 2 Parameter ???

        Kommentar


        • #5
          Zitat von einfacheruser Beitrag anzeigen
          Warning: mysql_set_charset() expects parameter 2 to be resource, object given in db.php on line 6
          Was gibt es denn daran misszuverstehen?
          ich hab doch 2 Parameter ???
          Ja, aber nicht vom richtigen Typ.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            aso -.- danke werde es gleich ausprobieren
            ich depp steht auch im manual

            Kommentar


            • #7
              Augen auf im Schneckenhaus. Einmal verwendest du mysqli, ein anderes mal mysql.

              Kommentar


              • #8
                jab habs kapiert
                aber es geht immer noch nicht ^^ in der Datenbank steht immer noch zb.
                25704 Elpersbüttel, Germany

                Kommentar


                • #9
                  Dann solltest du die Daten in der Datenbank korrigieren.

                  Kommentar


                  • #10
                    das hat das Script vor ^^
                    vieleicht sollt ich ne Funktion schreiben der alle Umlaute ersetzt aber das mit sämtlich sprachen auf der Welt zu machen ist ein bischen anstrengend xD

                    Kommentar


                    • #11
                      Naja, wenn in einer Datenbank gemischte Zeichensätze sind ist das ziemlich mühseelig bis kaum möglich.

                      Du solltest die Ursache dafür finden, bevor du jetzt Tage in die Symptombekämpfung steckst und dann 2 Wochen später wieder kaputte Daten in der Datenbank stehen.

                      Kommentar


                      • #12
                        mhh.. ja aber alles ist in UTF-8 sogar die Api
                        *edit*
                        Bin einen Schritt nähergekommen anscheinend verträgt diese Funktion die die Api ausließt keine Umlaut:
                        PHP-Code:
                            function loadFile($file,$utf8=true) {
                                
                        $fp fopen($file,"r");
                                if (
                        $fp)
                                {
                                    while(!
                        feof($fp))
                                    {
                                        
                        $text $text.fgets($fp);
                                        
                                    }
                                    
                        fclose($fp);
                                    if (
                        $utf8) {
                                        return 
                        utf8_decode($text);
                                    } else {
                                        return 
                        $text;
                                    }
                                } 
                            } 
                        Zuletzt geändert von einfacheruser; 13.06.2010, 21:44.

                        Kommentar


                        • #13
                          Warum verwendest du nicht einfach file_get_contents()?

                          Kommentar


                          • #14
                            Zitat von einfacheruser Beitrag anzeigen
                            PHP-Code:
                                        if ($utf8) {
                                            return 
                            utf8_decode($text);
                                        } 
                            Wenn du mit UTF-8 arbeiten willst - was will das utf8_decode denn dann da ...?

                            Und auch in deinem vorher geposteten Code fallen solche Stellen auf,
                            PHP-Code:
                                    $db->query(utf8_encode($sql)); 
                            Was soll das, wenn du angeblich „eigentlich alles mit utf-8 kodiert“ hast ...?
                            I don't believe in rebirth. Actually, I never did in my whole lives.

                            Kommentar


                            • #15
                              danke ich hab noch ein Fehler gefunden man darf irendwie nich zweimal hintereinander decodieren aber jetzt ist da noch ein Fehler:

                              Ich hab ein tollen sql query aber wie krieg ich ihn jetzt ohne verluste von umlauten in die Datenbank unter phpmyadmin geht das ...

                              Code:
                              UPDATE 
                                 `kitereview`.`places` 
                              SET         
                                 `adress` = 'Fährhafenstraße 2, 25899 Dagebüll,  Germany',
                                 `CountryNameCode` = 'DE',
                                 `CountryName` = 'Germany',         
                                 `ID` = 5         
                              WHERE 
                                 `places`.`ID` =5;
                              PHP-Code:
                              $db->query($sql); 
                              das macht nicht was ich will bestimmt ist es wie immer eine Kleinigkeit ...


                              @wahsaga
                              hab ich schon eingesehen und geändert siehe ersten Post
                              Zuletzt geändert von einfacheruser; 14.06.2010, 07:25.

                              Kommentar

                              Lädt...
                              X