2012-04-09 14 views
1

Ich nenne die Google Geolocation-Dienst wie folgt aus:Zeichenkodierung in Geolokalisierung mit file_get_contents()/PHP

 $querystring = "http://maps.googleapis.com/maps/api/geocode/json?sensor=false&latlng=".$row['lat'].",".$row['lng']; 

     $context = stream_context_create(array(
      'http' => array(
       'timeout' => 10 
      ) 
     )); 

     $f = file_get_contents($querystring, 0, $context); 
     $f = json_decode($f); 

     if(!isset($f->status) || $f->status != 'OK') continue; 

     $f = $f->results[0]; 
     $location = $f->formatted_address; 

ich dann den Ort in die Datenbank einfügen:

 //add the location to the database 
     $sql = "INSERT INTO `wp_postmeta` 
      (`meta_id`, `post_id`, `meta_key`, `meta_value`) 
      VALUES 
      (
       NULL, 
       '".intval($row['ID'])."', 
       'location', 
       '".mysql_real_escape_string($location)."' 
      )"; 
     if($location) $insert = mysql_query($sql); 

Das Problem: Einige Zeichen werden nicht gut angezeigt, wenn ich die Wordpress-Beiträge bearbeite. Wie zum Beispiel "R. Hilario Riberio, 41-243 - Praça da Bandeira, Rio de Janeiro, 20270-180, Brasilien" sollte sein "R. Hilário Riberio, 41-243 - Praça da Bandeira , Rio de Janeiro, 20270-180, Brasilien "

Ich benutze UTF-8 als Zeichencodierung auf der Website. Aber das ist irrelevant, denn phpMyAdmin zeigt an, dass die Daten auch mit den defekten Zeichen in die Datenbank eingetragen werden.

Wie lege ich die richtige Zeichencodierung fest?

Antwort

2

Versuchen Sie folgendes:

  • Lassen Sie uns zuerst überprüfen, ob Ihre PHP + Browser korrekt arbeiten mit UTF-8, um die wirklichen Probleme zu debuggen. Legen Sie diese in Ihre PHP-Datei und Test in Ihrem Browser:

    echo 'Filosofía: φιλοσοφία'; 
    

    Sie sollten in der Lage sein, es zu lesen genau wie hier gezeigt (in Spanisch und Griechisch)

  • Sobald Sie sicher sind, dass UTF-8 richtig, Ausgabe Arbeits den Inhalt Ihres $f Array:

    echo "<pre>\n" . print_r($f, true) . "\n</pre>"; 
    

    überprüfen Sie, ob Inhalte verstümmelt aussehen.

  • Stellen Sie sicher, MySQL mitteilen, dass Sie UTF-8 verwenden möchten:

    mysql_set_charset('utf8'); 
    

    Dieses sofort nach die mysql_connect() Funktion.

+0

Test # 1 kann helfen, aber es ist nicht 100% zuverlässig. Ich habe zu viele Fälle aus dem wirklichen Leben gesehen, in denen das Skript die Daten vor dem Speichern korrumpieren würde und sie vor der Anzeige vollkommen "korrupte". –

Verwandte Themen