1

Я называю геолокации службы Google, как это:символов в геолокации с 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; 

Я затем вставить расположение в базу данных:

 //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); 

Проблема: Некоторые символы отображаются неправильно, когда я редактирую сообщения Wordpress. Как, например, "R. Hilário Riberio, 41-243 - Praáza da Bandeira, Rio de Janeiro, 20270-180, Brazil" должно быть "R. Hilário Riberio, 41-243 - Praça da Bandeira , Рио-де-Жанейро, 20270-180, Бразилия "

Я использую UTF-8 в качестве кодировки символов на веб-сайте. Но это не имеет значения, поскольку phpMyAdmin показывает, что данные также вводятся в базу данных со сломанными символами.

Как установить правильную кодировку символов?

ответ

2

mysql_set_charset Использование установить кодировку подключения базы данных 'utf8', в противном случае MySQL не знает, что вы вставки данных в кодировке UTF-8 закодирован. Для получения дополнительной информации см. Handling Unicode in a Web App.

2

Попробуйте это:

  • Во-первых, давайте проверим, что ваш PHP + браузер корректно работать с UTF-8 для отладки реальных проблем. Поместите это в файл PHP и тест в вашем браузере:

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

    Вы должны быть в состоянии прочитать это как раз как показанное здесь (на испанском языке и греческий)

  • После того, как вы будете уверены, что UTF-8 является работает правильно, выводит содержимое вашего $f массива:

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

    Проверьте содержимое выглядеть искаженным.

  • Убедитесь, что вы сообщите MySQL, что вы хотите использовать UTF-8:

    mysql_set_charset('utf8'); 
    

    Место это сразу после того, как функция mysql_connect().

+0

Тест # 1 может помочь, но он не надежно на 100%. Я видел слишком много реальных случаев, когда сценарий искажал данные перед их хранением и отлично «не повреждал» его перед его отображением. –

Смежные вопросы