2

ポップアップでクエリ文字列をphpページにリダイレクトするボタンであるJavascriptウィジェットを作成しています。ウィジェットを統合するページは、最初に次のメソッドを使用して Javascript ウィジェットに情報を送信します。

<script src="http://api.mydomain.com/widget/widget.js?api_key=123&firstname=Veronica&lastname=Gällman" type="text/javascript"></script>

ウィジェットは送信された文字列を読み取り、popup/iframe を作成してhttp://api.mydomain.com/widget/index.php?firstname=Veronica&lastname =Gällmanにリダイレクトします。

この問題は、JS ウィジェットを含むページに がない場合に発生しますcharset=utf-8。特殊文字は疑問符またはボックスになります。

私のプログラマーは、次のようにしてほしいと思っています。

<script type="text/javascript">
    var search = 'api_key='+encodeURIComponent('1234')+
        '&firstname='+encodeURIComponent('Veronica')+
        '&lastname='+encodeURIComponent('Gällman')+
    document.write( search );
</script>

しかし、このアプローチは、ウィジェットを使用したい人にとっては問題があり、まったくエレガントではありません。

最後に、私の質問: これを解決するためのより良い方法はありますか?

スクリプトは、 と があるページをサポートする必要がcharset=utf-8ありcharset=iso-8859-1ます。

彼への私の提案は次のとおりです。

  1. &charset=iso-8859-1utf-8 でない場合はインテグレーターにクエリ文字列を強制的に送信させ、index.php で ISO を UTF-8 に変換します。

  2. ライブラリを使用して文字エンコーディングを検出します。ISOとして検出された場合は、index.phpでUTF-8に変換します

これらのどれかが合理的に聞こえますか? 2番は可能ですか?または、これに対するより良い解決策はありますか?

ウィジェットのユーザーにurlencode、自分のページに表示するよう強制する必要はありますか?

4

2 に答える 2

1

Donatasがすでに述べたように、人々(特にWeb上で!)にUTF8をすべてに使用するように強制することをお勧めします。

ただし、UTF8文字列をISO-8859-1に変換する必要がある場合は、http://phpjs.org/functions/utf8_decodeを試してください...

PS:すべてのUTF8文字をISO-8859-1表記で表現できるわけではないことを忘れないでください!

于 2012-08-03T20:30:50.380 に答える
1

mb_detect_encoding関数を使用してエンコードを検出し、 mb_convert_encodingまたはiconvを使用して変換できます。

ちなみに、UTF-8を使わせて世界をもっと良くしてみませんか?:)

于 2012-08-03T20:07:54.923 に答える