6

いくつかのパラメーターを必要とする URL があります。これらのパラメーターの値はアクセント付きの文字にすることができるので、絶対に UrlEncode する必要があります。奇妙なことに、Javascript と .NET の動作に違いが見られます。

「éléphant」という単語を UrlEncode しようとするふりをしましょう。JavaScript では (この Web サイトによると: http://www.albionresearch.com/misc/urlencode.php )、次のようになります: %E9l%E9phant. これは私には正しいようです。ただし、この呼び出し (System.Web.HttpUtility.UrlEncode("éléphant")) を使用した .NET では、「%c3%a9l%c3%a9phant」が表示されます。なにが問題ですか?私は何が欠けていますか?.NET で %E9l%E9phant を取得したい場合はどうすればよいですか?

ありがとう!

4

5 に答える 5

10

System.Web.HttpUtility.UrlEncode はデフォルトのエンコーダーとして UTF8 (私が思うに..) を使用します。指定することでこれを変更できます..

System.Web.HttpUtility.UrlEncode("éléphant", Encoding.Default); // %e9l%e9phant

OSのデフォルトに依存するのではなく、実際のコードページなどを指定する方が望ましい場合があります。

于 2009-02-05T05:31:35.573 に答える
5

参照:

js:       %E9 l     %E9 phant
.net: %c3 %a9 l %c3 %a9 phant

違いは、1 つはUTF-8URL エンコーディングであり、もう 1 つは URL エンコーディングを提供していることですANSI

.NET では、次を試してください。

Dim a As String = System.Web.HttpUtility.UrlEncode( _
    "éléphant", _
    Text.Encoding.Default)

私は得る

    %e9 l     %e9 phant

結果として。これは、16 進文字のケースを除いて、JavaScript に指定した文字列と一致します。

于 2009-02-05T05:34:59.670 に答える
3

Encoding.Default は、システムの現在のコード ページが西ヨーロッパに設定されている場合にのみ機能します。Javascript が .NET エンコーダーと同じマシンでも実行されている場合、これは重要かもしれませんが、そうでない場合は、コード ページを西ヨーロッパのものに強制することができます。

System.Web.HttpUtility.UrlEncode("éléphant", Encoding.GetEncoding(1252));
于 2009-02-05T05:38:25.277 に答える
2

base64 エンコーディングを試すこともできます。

JavaScript でそれを行うことを扱っ た以前の投稿があります。

.NET に関しては、その方法を示す多くの例があります。これは私がGoogleから見つけたものです。

もちろん、文字列は urlencoding よりも少し大きくなる可能性があります。ただし、それらは難読化されるため、アプリケーションによっては利点になる可能性があります。

于 2009-02-05T06:22:12.570 に答える