経典で見た URL の 16 進数の % を思い出し、なぜこのエンコーディングが使用されているのかを尋ねるいくつかの回答を読みました。 。ネット上では、ASCIIコードしかサポートできない特定のデバイスとの互換性のためだと言われています。この説明は少し突飛な気がしますが、どう思いますか? 。 。
私の疑問は、サーバーがそのような URL をどのように解析してそのような 16 進数を取得するのかということです。サーバーは、そのような 16 進数が表すエンコーディングをどのように判断するのでしょうか?
%B7%FE%CE%F1%C6%F7%C8%E7。 。この文字列と同様に、サーバーはそれが UTF8 でエンコードされているか、GBK または GB2321 であるかをどのように解析します。 。 。
urldecode
UTF-8 と GBK のエンコードにはまだ違いがあり、特性コードから識別できます。
違いを詳しく説明してもらえますか?
URL エンコードは、urldecode を暗黙的に実行する Web サーバーによってデコードされます
何が渡されるかについては、アプリケーションによって解釈される必要があります
これはサーバーとは関係ありません。ブラウザはエンコードを解釈し、統一された同一の urlencode 処理を実行します。そうですね、水の赤ちゃんですね
はい。 。アプリケーションの問題であることは理解しています。 。しかし、エンコード形式を決定する方法がまだわかりません。 。もう 1 つの質問は、このようなコーディングはクライアント側で JS を使用して実装し、バックエンドに移動するときにバックグラウンド コードによって解析する必要があるということです。これは、両端のコーディングを統合する必要があることを意味しますが、それでも難しいことはありません。同じ問題です。どのエンコーディングであるかを判断する方法はありますか?
URL アドレスに中国語の文字を送信すると、ブラウザーが異なると結果も異なります。一部は GBK、一部は UTF-8 です。ブラウザーの自動化による不都合を防ぐために、中国語は最初に urlencode で処理する必要があり、受信側は urldecode を使用して処理します。
PHP には文字セットを検出する方法がありますが、あまり正確ではないため、あまり期待しないでください。