0

私はApacheで実行されているjavascriptにちょっと慣れていませんが、次の問題があります。

エスケープを使用して、javascript を使用して URL で文字列「Café」を使用できるようにします。

"&place=" + escape(placename);

文字列は "Caf%E9" に変換され、次のページ (php ページ) では "Café" として表されます。

すべて問題ありませんが、コードをウェブホストにアップロードすると、「Caf%C3%A9」に変換されます。ページ内では「Café」として表示されます。

デコードにはUTF-8を使用しています。私のウェブホストは iconv.input_encoding ISO-8859-1 を使用しています。

ここに問題があると思います。これを修正する最良の方法は何ですか?UTF-8 を ISO-8859-1 に変更しますか、それとも変換機能がありますか?

編集 私はUTF8メタタグを持っています

<meta http-equiv="content-type" content="text/html; charset=utf-8"/>

encodeURIComponent も使用しようとしましたが、同じ結果が得られます

"&place=" + encodeURIComponent(placename);

編集:コードを追加

これはコードで、Web とはローカルで異なる動作をします。コードは Google Maps API を使用します。

    var lat = place.geometry.location.lat();
var lng = place.geometry.location.lng();
var placename = place.name;
var placerating = place.rating;
if (placerating == undefined) {
    placerating = 0;
}
var placeaddress = place.vicinity;
var website = place.website;
var url = place.url;

var day = new Date();
var m = day.getMonth() + 1;
var d = day.getDate();
var y = day.getFullYear();

var formUrl = "myform.php?d=" + d + "&m=" + m + "&y=" + y + "&lat=" + lat + "&lng=" + lng + "&place=" + encodeURIComponent(placename);

(場所名)を警告すると、両方の環境で同じ結果が得られることに注意してください。つまり「カフェ」

解決

私のウェブホストは、ページに ISO-8859-1 の使用を強制する別のエンコーディングを使用していました。私はhtmlメタタグを使用しましたが。

次の PHP ヘッダーをページの先頭に追加します

header("Content-type: text/html; charset=utf-8");

ティア、コーエン

4

2 に答える 2

1

escapeクエリ文字列パラメーターをエスケープするためではなく、それencodeURIComponentが目的です。escapeたようなことを行いますが、異なるため、方程式の半分のサーバーと 100% 互換性があるわけではありません。

ただし、これとは別に、あるエンコーディングでテキストをエンコードし、別のエンコーディングを使用して別の端で正常にデコードすることはできません。Apache ヘッダーを使用して、ISO-8859-1 ではなく UTF-8 でページを配置できるはずです。ヘッダーで実行できない場合は、HTML で実行できますhead

<meta charset="UTF-8">

...そしてもちろん、ファイルが実際に UTF-8 でエンコードされていることを確認します (たとえば、エディターの設定を確認するなど)。

StackOverflow に関するこの他の回答も役立つ場合があります。URI に関連するエンコーディングについて説明しています。

于 2012-06-20T13:03:27.097 に答える
0

解決

私のウェブホストは、ページに ISO-8859-1 の使用を強制する別のエンコーディングを使用していました。私はhtmlメタタグを使用しましたが。

次の PHP ヘッダーをページの先頭に追加します

header("Content-type: text/html; charset=utf-8"); 

または、ウェブホストにエンコーディングを UTF-8 に変更するように依頼しました。

于 2012-06-25T15:17:40.217 に答える