Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 16009|Jawab: 2

[ASP.NET] Pengkodean dan decoding URL di ASP.NET

[Salin tautan]
Diposting pada 12/01/2016 13.04.21 | | | |

Mari kita lihat dua URL berikut, apakah mereka melewati parameter yang sama?
aaa.aspx?tag=.net%bc%bc%ca%f5
aaa.aspx?tag=.net%e6%8a%80%e6%9c%af

Tampaknya berbeda, tetapi pada kenyataannya, mereka semua menggunakan UrlEncode untuk "teknologi .net", tetapi satu adalah pengkodean GB2312 dan yang lainnya adalah pengkodean Utf-8.
Kode berikut dapat memperoleh efek pengkodean di atas:

string tmp1 = System.Web.HttpUtility.UrlEncode(".net technology", System.Text.Encoding.GetEncoding("GB2312"));
string tmp2 = System.Web.HttpUtility.UrlEncode(".net technology", System.Text.Encoding.UTF8);

Halaman web kami yang sebenarnya dapat dipanggil oleh program lain.
Misalnya, Mandarin Menyederhanakan halaman ASP pada sistem operasi perlu meneruskan parameter Mandarin ke halaman ASP.net.
Secara default, pada sistem operasi Sederhana Cina, metode Server.UrlEncode ASP akan mengkodekan bahasa Cina dengan pengkodean GB2312.
Tetapi secara default, halaman ASP.net dikodekan dalam UTF-8.
Dalam hal ini, ketika Anda menggunakan Request.QueryString["Tag"] untuk menerima nilai, Anda tidak akan dapat menerima informasi Cina, dan Anda akan melihat karakter kacau dalam debugging langkah demi langkah.
Saat ini, meskipun Request.QueryString["Tag"] diterima dengan karakter yang kacau, URL saat ini tidak kacau.

Solusinya adalah menganalisis parameter dalam URL sendiri, lalu mendekripsi nilai parameter sesuai dengan pengkodean GB2312, alih-alih menggunakan pengkodean UTF-8 default .net.
Faktanya, Microsoft juga menyediakan fungsi yang sesuai, jadi kita tidak perlu menggunakan ekspresi reguler untuk menganalisis string URL sendiri.

Kode demonya adalah sebagai berikut:

string q = Permintaan.Url.Kueri;

System.Collections.Specialized.NameValueCollection nv =
System.Web.HttpUtility.ParseQueryString(q, System.Text.Encoding.GetEncoding("GB2312"));
Response.Write(nv["Tag"]);

Mari kita gunakan .NET Reflector Lutz Roeder untuk melihat implementasi metode System.Web.HttpUtility.ParseQueryString:
Jika kita terus memeriksa kembali, kita dapat melihat bahwa kode yang akhirnya menangani analisis string parameter URL adalah sebagai berikut:

Fungsi berikut dari kelas System.Web.HttpValueCollection mengimplementasikan penguraian parameter URL
Di sini kita melihat bahwa itu adalah analisis yang dilakukan oleh setiap karakter.



Adapun metode pengkodean seperti apa yang diteruskan pihak lain kepada kita, yang terbaik adalah meneruskannya sebagai parameter, sehingga kita dapat mendekripsinya sesuai dengan parameter pengguna ini.




Mantan:Apakah saya akan mendekorasi rumah saya menjadi studio untuk bekerja?
Depan:AssemblyInfo.cs penjelasan spesifik tentang parameter file
 Tuan tanah| Diposting pada 04/12/2024 17.15.50 |
Pengodean dan dekode URL .NET Core

 Tuan tanah| Diposting pada 04/12/2024 17.35.32 |
Kumpulan karakter yang berbeda dikodekan sebagai berikut:



Kode:



Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com