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

utf-8を使用してURLに日本語の文字を直接使用することはできません。パラメータを渡すには、urlエンコーディングを使用する必要があります。

次のリンクも見てください。

URL/FTPサーバーの日本語文字

于 2012-05-31T09:49:42.623 に答える
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 を確認してください: Uniform Resource Locators (URL)

于 2012-05-31T09:39:04.340 に答える