PDA

View Full Version : مشکل با QueryString فارسی



hackerboy
سه شنبه 14 فروردین 1386, 17:43 عصر
سلام.
من با کد زیر یک QueryString رو می‌خونم:


uId = Request.QueryString["uid"]

حالا اگر این uid یک عبارت فارسی باشه، نمی‌تونه اونو بخونه! مشکل از کجاست؟

nazaninam
سه شنبه 14 فروردین 1386, 19:24 عصر
مشکل از ذخیره سازی فایل هایتون هست
برای اینکار هم صفحه ای که querystring رو ارسال می کنه هم صفحه ای که دریافت می کنه رو به صورت زیر ذخیره کنید :
وارد منوی فایل بشید
گزینه Save As رو انتخاب کنید
فلش رو به پایین در کنار save رو کلیک کنید و Save with encoding with signiture رو انتخاب نمایید

hackerboy
سه شنبه 14 فروردین 1386, 20:30 عصر
ممنون ولی جواب نمی‌ده!

Behrouz_Rad
سه شنبه 14 فروردین 1386, 21:20 عصر
از توابع UrlEncode و UrlDecode کلاس HttpUtility استفاده کن.

manager
سه شنبه 14 فروردین 1386, 21:24 عصر
برای جابجائی اطلاعات هم از طریق Query String از Server.UrlDecode , Server.UrlEncode استفاده کن

hackerboy
چهارشنبه 15 فروردین 1386, 15:24 عصر
همه‌ی اینها رو تست کردم، ولی هنوز هیچ مقداری به uid داده نمیشه. کمک!!!

nazaninam
چهارشنبه 15 فروردین 1386, 19:47 عصر
صفحاتت رو یک فایل rar کن و اینجا بگذار تا ببینیم

hackerboy
جمعه 17 فروردین 1386, 21:35 عصر
براتون فایلها رو اتچ کردم.
فایل TestQueryString.aspx رو به صورت
localhost/TestQueryString.aspx?q=تست
اجرا کنید.

با سپاس

hamhik
جمعه 17 فروردین 1386, 22:21 عصر
دستورات شما رو هم در خود c# و هم به زبان vb که اجرا کردم در هر دو حالت تنها نتیجه ای که می داد این بود که اگر مقدار پارامتر فارسی بود رو نشون نمی ده البته من فکر می کنم که دلیل این امر این باشه که وقتی شما مقدار پارامتری که فارسی هست رو از یک صفحه به صفحه ی دیگری منتقل می کنید یا این دستورات رو به صورتی که در زیر نوشتم به کار ببرید در این مدت عملیاتی روی رشته صورت می گیره. به عنوان مثال اگه شما در vb پارامتری که فارسی هست رو به صفحه ی دیگری منتقل کنید تمامی حروف به صورت درصد در می آیند من دستورات شما رو به شکل زیر نوشتم جواب داد


public partial class TestQueryString : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Page.Response.Write(Request.QueryString["q"]);
}

protected void Button1_Click(object sender, EventArgs e)
{
Response.Redirect("testquerystring.aspx?q=تست");
}
}

hackerboy
شنبه 18 فروردین 1386, 14:11 عصر
درست. ولی حالا چه‌طوری این QueryString رو بریزم توی یک متغیر؟

ali_kolahdoozan
شنبه 18 فروردین 1386, 14:15 عصر
بگو می خواهی چیکار کنی تا راهنماییت کنیم . شاید اصلا متغیر و .. لازم نباشه . اصلا منطق و دلیل خودت رو برای اینکه حتما لازمه فارسی بزاری توی querystring بگو شاید راه بهتری باشه

hamhik
شنبه 18 فروردین 1386, 14:30 عصر
اگه شما می خواهید که در یک متغیر ریخته بشه به صورت زیر است



public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

string uid;
uid = Request.QueryString["q"];
Page.Response.Write(uid);
}

protected void Button1_Click(object sender, EventArgs e)
{
Response.Redirect("default.aspx?q=تست");
}
}


و یا اگر می خواهید بدون استفاده از دکمه نتیجه رو ببینید(همان چیزی که در برنامه خودتون بود) باید عبارت زیر را در addressbar مرورگر بنویسید.پارامتر q رو ادامه آدرس به شکل زیر اضافه کنید


q=%d8%aa%d8%b3%d8%aa

hackerboy
شنبه 18 فروردین 1386, 14:38 عصر
درست مشکل همین جاست.
اگه من بزنم:

string uid;
uid = Request.QueryString["q"];
Page.Response.Write(uid);

هیچی توی uid ریخته نمی‌شه (اگه فارسی باشه و حتی به صورت %XX).

hackerboy
یک شنبه 19 فروردین 1386, 19:42 عصر
دوستان مهندس. بالاخره درست شد.
راه این بود که در web.config بزنیم:


<globalization
fileEncoding="windows-1256"
requestEncoding="windows-1256"
responseEncoding="windows-1256"
/>

از همتون که وقت گذاشتید ممنونم. امیدوارم همیشه موفق باشید. یه تشکر طلب همتون!

raravaice
دوشنبه 03 اردیبهشت 1386, 10:31 صبح
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
Response.Write(Request.QueryString("withencode") & "<br>" & Request.QueryString("withoutencode"))
Catch ex As Exception

End Try



End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Response.Redirect("index.aspx?withencode=" & Server.UrlEncode("محمد") & "&withoutencode=محمد")
End Sub

raravaice
دوشنبه 03 اردیبهشت 1386, 10:32 صبح
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
Response.Write(Request.QueryString("withencode") & "<br>" & Request.QueryString("withoutencode"))
Catch ex As Exception
End Try


End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Response.Redirect("index.aspx?withencode=" & Server.UrlEncode("محمد") & "&withoutencode=محمد")
End Sub
اگه اینجوری عمل کنی مشکلت حله یعنی چیزای فارسا که میخوای بفرستی کد کنی بعد بخونی
موفق باشی