PDA

View Full Version : سوال: بازنویسی رشته



hercool
پنج شنبه 04 مهر 1392, 12:14 عصر
سلام دوستان
من یک رشته دارم که از یک سایت اون رو می گیرم یک کلمه ای هم هست
حالا زمانی که اون کلمه رو داخل جدول جستجو می کنم جوابی نمیاد و چیزی پیدا نمی کنه
ولی وقتی خودم همون کلمه رو به یک متغییر میدم می تونه اون کلمه رو داخل جدول پیدا کنه چک کردم و فضای خالی هم نبود که باعث مشکل بشه
حالا می خوام راهی برای بازنویسی اون رشته داشته باشم که این مشکل رفع بشه اما نمی دونم چکارش کنم

با utf8 هم چکش کردم و تنها دو بایت اخرش فرق داشت دو رشته عین هم بودن

hercool
پنج شنبه 04 مهر 1392, 22:27 عصر
برای مثال من این قسمت رو میزارم که نشون دهنده مشکل من هست
با اینکه هر دو یکی هستن منظورم کلمه وات هست اما برابر هم نیستند

این کد
string test = File.ReadAllText("e:\\ss.txt");
MessageBox.Show(test);
string namad = "وات";
if (namad == test) { MessageBox.Show("dorost ast"); }

اینم کلمه ای که در فایلss هست

وات

aliagamon
پنج شنبه 04 مهر 1392, 22:49 عصر
اگه مشکل همین فایله شما موقع ذخیره encoding اونو رو utf-8 بزار مشکل حل میشه ...
اما میتونی تبدیل هم بکنی:

byte[] ansiBytes = File.ReadAllBytes("d:\\ss.txt");
var test = Encoding.Default.GetString(ansiBytes);
MessageBox.Show(test);
string namad = "وات";
if (namad == test) { MessageBox.Show("dorost ast"); }

hercool
پنج شنبه 04 مهر 1392, 23:06 عصر
ممنون بابت پاسخت
حالا اگه بخوام یک رشته رو تبدیل کنم چکار باید بکنم
من این شکلی انجام دادم نشد
UTF8Encoding ut = new UTF8Encoding();
string s = Convert.ToString(Symbol);
byte[] ansiBytes = ut.GetBytes(Symbol);
Symbol = Encoding.Default.GetString(ansiBytes);

aliagamon
پنج شنبه 04 مهر 1392, 23:24 عصر
از یه همچین چیزی باید استفاده کنی:

byte[] ansiBytes = Encoding.GetEncoding(1252).GetBytes(str);
byte[] utf8Bytes = Encoding.Convert(Encoding.GetEncoding(1252), Encoding.UTF8, ansiBytes);
var test = Encoding.UTF8.GetString(ansiBytes);

hercool
پنج شنبه 04 مهر 1392, 23:36 عصر
همه رو تبدیل به علامت سوال می کنه علی جان

hercool
پنج شنبه 04 مهر 1392, 23:41 عصر
اگه به جای 1252 از 65001 استفاده نم مشکل بر می گرده و تعداد بایت های رشته زیاد می شه

aliagamon
پنج شنبه 04 مهر 1392, 23:55 عصر
میشه ادرس سایت رو بدی ؟ :متفکر:

shahryari
جمعه 05 مهر 1392, 09:55 صبح
حالا زمانی که اون کلمه رو داخل جدول جستجو می کنم جوابی نمیاد و چیزی پیدا نمی کنه
ولی وقتی خودم همون کلمه رو به یک متغییر میدم می تونه اون کلمه رو داخل جدول پیدا کنه چک کردم و فضای خالی هم نبود که باعث مشکل بشه
سلام
موارد زیر رو بررسی کن:
1- ممکن است اون کلمه دارای کاراکتر های "ی" و "ک" باشد . راه حل = با موارد داخل جدول چک شود و در صورت یکی نبودن اصلاح شود (دراین باره تاپیک های زیادی در این انجمن است)
2- ممکن است اون کلمه مولتی لاین باشد مثلا قبلش یا بعدش یک اینتر خالی باشد راه حل = گرفتن مقدار خالص و تبدیل به استرینگ tostring.trim
3- ممکن است ابتدا یا انتهای اون کلمه یک اسپیس یا بیشتر باشد. راه حل شماره 2
.............در غیر این صورت کد و آدرس سایتی که اون کلمه رو برمی گردونه و همچنین موارد مشابه در جدولتون رو بذارید تا بررسی بشه