PDA

View Full Version : سوال: ذخيره صفحه در WebBrowser



Hossis
چهارشنبه 05 اسفند 1388, 22:12 عصر
من وقتي يک webBrowser رو بوسيله دستورات IO.File بارگذاري کرده و کد اچ تي ام ال رو وارد مي کنم،‌ هنگام ذخيره هيچ مشکلي نداره و بعدا هم سالم باز ميشه
اما اگر طبق دستور عادي آن را بارگذاري کنم WB.Navegate وقتي فايلش رو ذخيره مي کنم، کلا به هم مي ريزه و متنش خونده نمي شه و به جاي حروف فارسي،‌ مربع يا علامت سؤال مي‌آد.
به نظر شما چطوري مشکل رو حل کنم (چون ناچارم از طريق دوم صفحه وب رو داخلش باز کنم) آيا متد ديگري براي ذيره سازي هست؟؟:گریه::عصبانی++:

pirmard
چهارشنبه 05 اسفند 1388, 22:43 عصر
من وقتي يک webBrowser رو بوسيله دستورات IO.File بارگذاري کرده و کد اچ تي ام ال رو وارد مي کنم،‌ هنگام ذخيره هيچ مشکلي نداره و بعدا هم سالم باز ميشه
اما اگر طبق دستور عادي آن را بارگذاري کنم WB.Navegate وقتي فايلش رو ذخيره مي کنم، کلا به هم مي ريزه و متنش خونده نمي شه و به جاي حروف فارسي،‌ مربع يا علامت سؤال مي‌آد.
به نظر شما چطوري مشکل رو حل کنم (چون ناچارم از طريق دوم صفحه وب رو داخلش باز کنم) آيا متد ديگري براي ذيره سازي هست؟؟:گریه::عصبانی++:

امکانش هست برنامه رو ضمیمه کنین ؟

Hossis
چهارشنبه 05 اسفند 1388, 23:09 عصر
با تشکر فراوان از زحمات شما که با صبر و حوصله‌، به سؤالات دوستان با پاسخ‌هاي کامل ، رسيديگي ميکنيد واقعا جوابهاتون حرف نداره
اين هم يک نمونه از سورسي که گفتم

pirmard
پنج شنبه 06 اسفند 1388, 00:31 صبح
با تشکر فراوان از زحمات شما که با صبر و حوصله‌، به سؤالات دوستان با پاسخ‌هاي کامل ، رسيديگي ميکنيد واقعا جوابهاتون حرف نداره
اين هم يک نمونه از سورسي که گفتم

خواهش می کنم . وظیفس .
من الان طبق برنامه برنامه خودتون یه صفحه فارسی رو آوردم
و اینطوری سیوش کردم :
IO.File.WriteAllText("c:\01.html", WB.DocumentText)

مشکلی وجود نداشت ! هم صفحه فروم برنامه نویس رو سیو کردم و هم گوگل فارسی رو مشکلی وجود نداشت وقتی باز کردم فایل رو .

حالا یا من کلهم متوجه منظور شما نشدم یا اینکه شما وقتی اون صفحه رو باز می کنید انکودینگ بروزرتون روی مورد نامناسبیه.
کلن اگه بگین با چه صفحه ای مشکل حروف فارسی رو دارین و در صورت امکان فایل سیو شده ی اون صفحه که میگین به هم ریخته رو هم ضمیمه کنین شاید بشه بهتر بررسی کرد .

Hossis
پنج شنبه 06 اسفند 1388, 23:47 عصر
با تشکر مجدد
يک نمونه صفحه مي فرستم ببينيد مشکل صفحه چيه ؟؟
اولي سالمش هست و دومي بعد از ذخيره و البته به هم ريخته

pirmard
شنبه 08 اسفند 1388, 14:05 عصر
واللا دیشب اومدم اینو جواب بدم یه عالمه نوشتم بعد فایرفاکس هنگ کرد پرید !

pirmard
شنبه 08 اسفند 1388, 14:11 عصر
مشکل سیو شدن در این حالت اینه که بدون در نظر گرفتن انکودینگ ذخیره انجام میشه .
اما شما می تونین از یه سری انکودینگ های رایج استفاده کنین

این کد رو به اول بنامه اضافه کنین :

Imports System.Text
Imports System.Text.Encoding

این رویداد رو هم جایگزین رویدادی که خودتون نوشتین بکنین :


Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton1.Click
Dim MemStream As New IO.MemoryStream(System.Text.Encoding.Unicode.GetBy tes(WB.DocumentText))
IO.File.WriteAllText("D:\01.html", System.Text.Encoding.Unicode.GetString(MemStream.T oArray))

End Sub

این کد بالا الان صفحه شما رو با انکودینگ unicode ذخیره می کنه . می تونین از انکودینگ های دیگه ای که وجود داره توی اون کلاس استفاده کنین .

اما صفحه ای که شما می خواستین سیوش کنین انکودینگش arabic ه . و این انکودینگ به صورت دیفالت برای اون کلاس فراهم نشده .
حالا شما دو تا راه حل دارین :
1- شیوه ی ذخیره کردنتون رو عوض کنین . که نمی دونم واقعا چه اصراریه برای ذخیره کردن کد به این صورت !
2- یه زیربرنامه برای تبدیل انکودینگ عربیک به مثلا یه انکودینگ استاندارد دیگه بنویسین و بعد صفحه رو ذخیره کنین (که ممکنه با کمی جستجو توی نت بتونین اینو بنویسین ولی یحتمل حوصله می خواد )

Hossis
شنبه 08 اسفند 1388, 14:33 عصر
با تشکر
اصراري نيست که با همون انکودينگ ذخيره بشه ، مشکلي که هست اگر با اون انکودينگ ذخيره نشه، بعدا به هم ميريزه
حالا من همين رو امتحان مي کنم انشاء الله که مشکل حل بشه.
مشکلي که براي تبديل هست اينه که
اولا از کجا مي شه در زمان اجرا، انکودينگ رو تشخيص داد
ثانيا : در دات نت تابعي براي تبديل انکودينگ نيست يا من سراغ ندارم ولي در وي بي 6 تابعي به اسم Strconv بود که تو دات نت يک کار ديگه مي کنه
با حل اين دو مسئله ، اين مشکل بالکل رفع مي شه

pirmard
شنبه 08 اسفند 1388, 14:37 عصر
با تشکر
اصراري نيست که با همون انکودينگ ذخيره بشه ، مشکلي که هست اگر با اون انکودينگ ذخيره نشه، بعدا به هم ميريزه
حالا من همين رو امتحان مي کنم انشاء الله که مشکل حل بشه.
مشکلي که براي تبديل هست اينه که
اولا از کجا مي شه در زمان اجرا، انکودينگ رو تشخيص داد
ثانيا : در دات نت تابعي براي تبديل انکودينگ نيست يا من سراغ ندارم ولي در وي بي 6 تابعي به اسم Strconv بود که تو دات نت يک کار ديگه مي کنه
با حل اين دو مسئله ، اين مشکل بالکل رفع مي شه

این کد که مشکل شما رو رفع نمی کنه ! صرفا جهت این بود که ببینین انکودینگهایی که به این شیوه در اختیارتون هست یه سری انکودینگ محدوده !
//
الان صورت مساله کلی مگه سیو کردن صفحات نیست ؟ پس جرا از شیوه ی دیگه ای استفاده نمی کنین که خودش با انکودینگ اون صفحه ذخیره سازی رو انجام بده ؟