1

我这样称呼谷歌地理定位服务:

        $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, 巴西"

我在网站上使用 UTF-8 作为字符编码。但这无关紧要,因为 phpMyAdmin 显示数据也以损坏的字符输入到数据库中。

如何设置正确的字符编码?

4

2 回答 2

2

用于mysql_set_charset数据库连接编码设置为'utf8',否则 MySQL 不知道您正在插入 UTF-8 编码的数据。有关更多信息,请参阅在 Web 应用程序中处理 Unicode

于 2012-04-09T09:17:00.830 回答
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 回答