152

JavaScript の場合:

encodeURIComponent("©√") == "%C2%A9%E2%88%9A"

C# アプリケーションに相当するものはありますか? 私が使用したHTML文字をエスケープするために:

txtOut.Text = Regex.Replace(txtIn.Text, @"[\u0080-\uFFFF]",
    m => @"&#" + ((int)m.Value[0]).ToString() + ";");

しかし、一致を JS が使用する正しい 16 進数形式に変換する方法がわかりません。たとえば、このコード:

txtOut.Text = Regex.Replace(txtIn.Text, @"[\u0080-\uFFFF]",
    m => @"%" + String.Format("{0:x}", ((int)m.Value[0])));

の代わりに"%a9%221a"を返します。文字列をバイトか何かに分割する必要があるようです。"©√""%C2%A9%E2%88%9A"

編集: これは Windows アプリ用です。使用できる項目System.WebAspNetHostingPermissionAspNetHostingPermissionAttribute、およびのみAspNetHostingPermissionLevelです。

4

7 に答える 7

248

Uri.EscapeDataStringまたはHttpUtility.UrlEncode、URL の一部となる文字列をエスケープする正しい方法です。

たとえば、次の文字列を考えてみましょう"Stack Overflow":

  • HttpUtility.UrlEncode("Stack Overflow")-->"Stack+Overflow"

  • Uri.EscapeUriString("Stack Overflow")-->"Stack%20Overflow"

  • Uri.EscapeDataString("Stack + Overflow")--> エンコードも"+" to "%2b"---->Stack%20%2B%20%20Overflow

URL の実際の部分として使用する場合は、最後の部分のみが正しい (クエリ文字列パラメーターの 1 つの値とは対照的に)

于 2010-12-29T00:21:40.270 に答える
20

HttpUtility.HtmlEncode/ デコード
HttpUtility.UrlEncode/ デコード

System.Webプロジェクトで使用できない場合は、アセンブリへの参照を追加できます

于 2008-09-17T19:06:21.647 に答える
19

私はc#用のjavascriptのencodeURIComponentの完全に互換性のある類似物をやろうとしました.4時間の実験の後、私はこれを見つけました

c# コード:

string a = "!@#$%^&*()_+ some text here али мамедов баку";
a = System.Web.HttpUtility.UrlEncode(a);
a = a.Replace("+", "%20");

結果は: !%40%23%24%25%5e%26*()_%2b%20some%20text%20here%20%d0%b0%d0%bb%d0%b8%20%d0%bc% d0%b0%d0%bc%d0%b5%d0%b4%d0%be%d0%b2%20%d0%b1%d0%b0%d0%ba%d1%83

Javascript の decodeURLComponent(); でデコードした後、

これが得られます: !@#$%^&*()_+ some text here али мамедов баку

清聴ありがとうございました

于 2011-02-04T20:39:24.290 に答える
13

System.Uri.EscapeUriString()は何もしなかったようですが、System.Uri.Escape Data String()は私のために機能しました。

于 2009-03-06T18:46:22.697 に答える
10

オブジェクトにアクセスできない場合はServer.UrlEncode()、 またはを試してください。を使用して、アセンブリへの参照の追加を回避することもできます。System.Web.HttpUtility.UrlEncode()ServerSystem.Uri.EscapeUriString()System.Web

于 2008-09-17T19:07:08.040 に答える
10

Windows ストア アプリの場合、HttpUtility はありません。代わりに、次のものがあります。

URI の場合、「?」の前:

  • システム。Uri.EscapeUriString ("example.com/Stack Overflow++?")
    • -> "example.com/Stack%20Overflow++?"

URI クエリの名前または値の場合、「?」の後に:

  • システム。Uri.EscapeDataString ("スタック オーバーフロー++")
    • -> 「スタック%20オーバーフロー%2B%2B」

POST コンテンツ内のx-www-form-urlencodedクエリ名または値の場合:

  • System.Net。WebUtility.UrlEncode (「スタック オーバーフロー++」)
    • -> 「スタック+オーバーフロー%2B%2B」
于 2013-06-10T08:51:35.723 に答える
6

System.Web 名前空間で Server オブジェクトを使用できます。

Server.UrlEncode、Server.UrlDecode、Server.HtmlEncode、および Server.HtmlDecode。

編集:ポスターは、これはWindowsアプリケーションであり、信じられているようなWebアプリケーションではないことを追加しました。上記の項目は、プロジェクトへの参照として追加する必要がある System.Web 内の HttpUtility クラスから利用できます。

于 2008-09-17T19:06:40.520 に答える