Google Geocode:PHP実装-文字エンコードの問題
-
22-07-2019 - |
質問
イギリスの住所データと国際住所データを使用しています。
Googleマップで使用するために住所データをジオコーディングする必要があります。 HTTPサービスを使用してこれを行っています。すなわち、クエリ文字列を構築し、それをfile_get_contents($ THEURL)に渡します。
住所データの80%を完全にジオコーディングできましたが、ノルウェーやスウィーデンなどの特殊文字を含む国の住所ではジオコードが返されません。返されるコードは602です(住所が見つかりません)。
ドキュメントを見ると、googleに送信される文字列はUTF8でエンコードされている必要があることがわかります。
文字列がUTF8エンコードされていることを確認するために次のことを試しました/特殊文字を削除します。
1)クエリ文字列でUTF8エンコードを使用する-これにより、画面に不正な文字が表示されることがよくあります。
2)mb_check_encodingは、文字列が正しくエンコードされていることを報告します。
3)関数を使用して、ユーロピエンのユーザーに特殊文字を代入します(google apiが補償することを期待しています)。
私のメソッドが機能しない理由を誰かが提案できますか(エンコードを行うかどうか)。
解決
システム内のすべてのエンコードの側面を体系的に調べ、エンコードの種類を定義する必要があります。 Mb_detect_encoding
と当て推量はここでは良い方法ではありません。
次のエンコードを確認する必要があります:
- 着信データ
- ページ
- GETパラメーター
- データベース接続
- データベーステーブルの照合順序
- 使用するスクリプトファイル
誤った形式の文字が発生する場合は、ISO-8859-1または他の非UTF-8エンコードをどこかで使用している可能性があります。すべてがきれいなUTF-8である場合、リクエストは通過するはずです。
基本に関する非常に優れた記事は、ソフトウェア開発者ごとの絶対最小要件Unicodeおよび文字セットについて(言い訳なし!)。