Web開発プロセス中に、URLに中国語の文字やhtmlなどの他の特殊文字を渡す必要がある場合、ブラウザごとにエンコード方法が異なるため、さまざまな小さな問題が常に発生します。中国人の場合、一般的なアプローチは次のとおりです:
これらのテキスト文字列を URL に渡す前に、まず urlencode($text) を実行します。
しかし、HTML 文字や SQL インジェクション関連の文字など、いくつかの非常に「危険な」文字については、それらが明らかにシステムに渡される場合、通常、システムはセキュリティ上の理由からそれらを除外します。
それでは、これらの危険な文字がフィルタリングされないようにする必要がある場合はどうすればよいでしょうか?
私が考える方法は、最初に base64_encode($text) でエンコードし、サーバーに到達したら、base64_decode($text) を与えてデコードすることです。
完璧に見えますが、使用中に別の問題が発生しました。base64_encodeのエンコードされた文字列には、「/」、「+」、「=」、などの文字が含まれています。
これらの文字は、「スペース」を意味する「+」などの URL エンコードの特殊文字ですが、ブラウザによって「スペース」のエンコード方法が異なり、「+」を使用するものと、「20」を使用するものがあります。たとえば、これらのbase64_encode エンコードされた文字列を URL に渡すと、異なるブラウザーで閲覧すると、サーバーは異なる値を取得します。
そこで、私は妥協案を考えました。まず、これらの Base64 でエンコードされた特殊文字を置き換え、サーバーに到達した後に元に戻すというものです。リーリー
ブラウザで得られる効果は以下の通りですxOO6w6Osuf65_aiy_atL_b00Ke5_b8jnus6ho6GjoaM_c
はは、それがどのように機能するか見てみましょう。 。 。 興味がありそうな記事