0

phpsqlgeocode.htmlの記事のデモコードをフォローしています

dbに、utf-8でエンコードされたいくつかの中国語アドレスを挿入しました。中国語のアドレスをurlencodeした後、アドレスの出力が間違っていることがわかりました。このように:

http://maps.google.com.tw/maps/geo?output=csv&key=ABQIAAAAfG3KxFZXjEslq8VNxMBpKRR08snBovzCxLQZ9DWwpnzxH-ROPxSAS9Q36m-6OOy0qlwTL6Ht9qp87w&q=

次に、200,5,59.3266963,18.2733433を出力します(PHPを介してこれを照会することはできませんが、代わりにブラウザーを介して照会できます)。

この住所は実際には台湾の台中にありますが、ヨーロッパのスウェーデンにあることがわかりました。しかし、URLに中国の住所(台中市西屯區智惠街131巷56號58號60號など)を貼り付けると、結果は良好であることがわかります。

元の中国語のアドレスを確実に送信するにはどうすればよいですか?どうすれば回避できurlencode()ますか?urlencode()削除しても何も変わらないことがわかりました。

(MAPS_HOSTをmaps.google.comからmaps.google.com.twに変更しました。)(私のキーは正しいと確信しており、他の英語のアドレスジオコーディングは問題ありません。)

4

1 に答える 1

0
q=%3F%3F%3F%3F%3F%3F%3F%3F%3F132%3F

次のようにデコードします。

?????????132?

そのため、URL エンコードの前に文字列が破損しています。これは、Latin-1 などの漢字をサポートしていないエンコーディングに漢字を変換しようとした場合に発生する可能性があります。

アプリケーション全体で一貫して UTF-8 を使用していることを確認する必要があります。特に、データベース内のテーブルが UTF-8 文字セットを使用して保存されていることを確認する必要があります。MySQL 用語では、UTF-8 照合です。それ以外の場合、MySQL のデフォルトの照合は Latin-1 です。また、1mysql_set_charset('utf-8')` を呼び出して、データベースへの接続が UTF-8 を使用していることを確認する必要があります。

(あなたの質問から、PHPを使用していると推測しています。)

于 2010-01-28T17:06:42.373 に答える