Dalam JavaScript:
encodeURIComponent("©√") == "%C2%A9%E2%88%9A"
Apakah ada yang setara untuk aplikasi C #? Untuk keluar dari karakter HTML yang saya gunakan:
txtOut.Text = Regex.Replace(txtIn.Text, @"[\u0080-\uFFFF]",
m => @"&#" + ((int)m.Value[0]).ToString() + ";");
Tapi saya tidak yakin bagaimana mengubah kecocokan ke format heksadesimal yang benar yang digunakan JS. Misalnya kode ini:
txtOut.Text = Regex.Replace(txtIn.Text, @"[\u0080-\uFFFF]",
m => @"%" + String.Format("{0:x}", ((int)m.Value[0])));
Mengembalikan " %a9%221a"
untuk "©√"
bukannya "%C2%A9%E2%88%9A"
. Sepertinya saya perlu membagi string menjadi byte atau sesuatu.
Edit: ini adalah untuk aplikasi windows, satu-satunya item yang tersedia di System.Web
adalah: AspNetHostingPermission
, AspNetHostingPermissionAttribute
, dan AspNetHostingPermissionLevel
.
HttpUtility.HtmlEncode
/ DekodeHttpUtility.UrlEncode
/ DekodeAnda dapat menambahkan referensi ke
System.Web
majelis jika tidak tersedia di proyek Andasumber
Saya mencoba melakukan analog kompatibel penuh dari kode javascript encodeURICon untuk c # dan setelah 4 jam percobaan saya menemukan ini
c # KODE:
hasilnya adalah: !% 40% 23% 24% 25% 5e% 26 * () _% 2b% 20some% 20teks% 20di sini% 20% d0% b0% d0% bb% d0% b8% 20% d0% bc% d0% b0% d0% bc% d0% b5% d0% b4% d0% menjadi% d0% b2% 20% d0% b1% d0% b0% d0% ba% d1% 83
Setelah Anda mendekodekannya dengan decodeURLComponent ();
Anda akan mendapatkan ini :! @ # $% ^ & * () _ + beberapa teks di sini али мамедов баку
Terima kasih atas perhatian Anda
sumber
Uri.EscapeDataString("!@#$%^&*()_+ some text here али мамедов баку")
saja.Uri.EscapeDataString
mengkodekan karakter '(' dan ')' sementaraHttpUtility.UrlEncode
tidak.System.Uri.EscapeUriString () sepertinya tidak melakukan apa-apa, tetapi System.Uri.Escape Data String () bekerja untuk saya.
sumber
Coba
Server.UrlEncode()
, atauSystem.Web.HttpUtility.UrlEncode()
sebagai contoh ketika Anda tidak memiliki akses keServer
objek. Anda juga dapat menggunakanSystem.Uri.EscapeUriString()
untuk menghindari menambahkan referensi keSystem.Web
majelis.sumber
Uri.EscapeUriString()
sesuai dengan JavaScriptencodeURI()
- yang mempertahankan karakter yang dilindungi undang-undang. seperti/
,&
, ... seperti apa (plus#
), sedangkan - seperti yang Anda telah menemukan, itu adalahUri.EscapeDataString()
yang sesuai dengan JavaScript iniencodeURIComponent()
.Untuk Aplikasi Windows Store, Anda tidak akan memiliki HttpUtility. Sebaliknya, Anda memiliki:
Untuk URI, sebelum '?':
Untuk nama atau nilai permintaan URI, setelah '?':
Untuk nama atau nilai permintaan x-www-form-urlencoded , dalam konten POST:
sumber
Anda bisa menggunakan objek Server di namespace System.Web
Server.UrlEncode, Server.UrlDecode, Server.HtmlEncode, dan Server.HtmlDecode.
Sunting: poster menambahkan bahwa ini adalah aplikasi windows dan bukan aplikasi web seperti yang diyakini. Item yang tercantum di atas akan tersedia dari kelas HttpUtility di dalam System.Web yang harus ditambahkan sebagai referensi ke proyek.
sumber