1

私は次のように Google ジオロケーション サービスを呼び出します。

        $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ça da Bandeira, Rio de Janeiro, 20270-180, Brazil」のように、「R. Hilário Riberio, 41-243 - Praça da Bandeira, Rio de Janeiro 、20270-180、ブラジル」

Webサイトの文字エンコーディングはUTF-8を使用しています。しかし、それは関係ありません.phpMyAdminは、データが壊れた文字でデータベースに入力されていることを示しているからです.

正しい文字エンコーディングを設定するにはどうすればよいですか?

4

2 に答える 2

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()

于 2012-04-09T09:33:51.207 に答える
2

データベース接続エンコーディングmysql_set_charsetに設定するために使用します。そうしないと、MySQL は UTF-8 でエンコードされたデータを挿入していることを認識しません。詳細については、 Web アプリでの Unicode の処理を参照してください。'utf8'

于 2012-04-09T09:17:00.830 に答える