0

现在我有了一个数据库。该数据库使用全能的 utf-8 排序规则进行编码。实际上排序规则是utf8,我不确定编码是什么。那应该是另一个问题。

然后我编写了一个程序来从数据库中检索数据。

<?php
    require_once('convertArraytoJson.php');
    require_once('config.php');
    mysql_connect ( "localhost", $databaseuser, $databasepassword);
    mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'");
    @mysql_select_db ($databasename) or die ( "Unable to select database" );
    $data=$_GET['id'];
    $query="SELECT * FROM `tabletes` where id = '".$data."'";
    $data = mysql_query($query);
    while (true){
        $info = mysql_fetch_array ( $data, MYSQL_ASSOC );
        if ($info == false) {
            break;
        }
        //$output[]=$info;
        $output[$info['ID']]=$info;
        unset ($output[$info['ID']]['ID']);
    }
    $result = array2json($output);

    echo $result;
?>

数据库的内容如下所示:

在此处输入图像描述

现在我通过这样做来调用该函数(您需要放大屏幕才能看到它):

http://localhost/domainname/api/test2.php?id=jr-東北本線-荒川橋梁__35.79_139.72

它不起作用。

但是,如果我不使用 $_GET 而是直接在代码中输入日文字符,它就可以工作。

所以如果我改变:

$data = $_GET['id']

$data = 'jr-東北本線-荒川橋梁__35.79_139.72'

一切正常。

当然,我不想硬连线 ID,我想通过 $_GET['id'] 访问它。我该怎么办?

4

2 回答 2

2

只需使用urlencode()- 你的字符串变成:

%E6%9D%B1%E5%8C%97%E6%9C%AC%E7%B7%9A-%E8%8D%92%E5%B7%9D%E6%A9%8B%E6%A2%81.

这些汉字是不允许的。

检查 rfc1738:统一资源定位器 (URL)

于 2012-05-31T09:39:04.340 回答
2

您不能使用 utf-8 将日文字符直接插入 url。您需要使用 url 编码来传递参数。

也请看下面的链接。

URL/FTP 服务器中的日文字符

于 2012-05-31T09:49:42.623 回答