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.Web
は、AspNetHostingPermission
、AspNetHostingPermissionAttribute
、およびAspNetHostingPermissionLevel
です。
_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つの値とは対照的に)
HttpUtility.HtmlEncode
/デコードHttpUtility.UrlEncode
/デコード
プロジェクトで使用できない場合は、System.Web
アセンブリへの参照を追加できます
私は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%8
JavascriptのdecodeURLComponent()でデコードした後;
あなたはこれを取得します:!@#$%^&*()_ +ここにいくつかのテキストалимамедовбаку
清聴ありがとうございました
System.Uri.EscapeUriString()は何もしないようでしたが、System.Uri.Escape Data String()は私のために働きました。
Server
オブジェクトにアクセスできない場合は、Server.UrlEncode()
またはSystem.Web.HttpUtility.UrlEncode()
を試してください。 System.Uri.EscapeUriString()
を使用して、System.Web
アセンブリへの参照の追加を回避することもできます。
Windowsストアアプリの場合、HttpUtilityはありません。代わりに、次のものがあります。
URIの場合、「?」の前:
URIクエリ名または値の場合、「?」の後:
x-www-form-urlencoded クエリ名または値の場合、POST content:
System.Web名前空間でServerオブジェクトを使用できます
Server.UrlEncode、Server.UrlDecode、Server.HtmlEncode、およびServer.HtmlDecode。
編集:ポスターは、これがWindowsアプリケーションであり、Webアプリケーションではないと信じていると付け加えました。上記の項目は、プロジェクトへの参照として追加する必要があるSystem.Web内のHttpUtilityクラスから利用できます。