PDA

View Full Version : خواندن فایل (متنی)فارسی با دلفی



ayat255
دوشنبه 29 آبان 1391, 13:17 عصر
سلام به دوستان برنامه نویس خودم
من یه مشکلی دارم که نصفش به دلفی مربوط میشه نصفشم به php حالا مشکل:
من یک query از mysql تو سرور میگرم با php و خروجی شو تو 1 فایل متنی ذخیره و دانلود میکنم،حالا این فایل رو تو سیستم local دارم اما یونیکد شده است(Encode in UTF-8 Without BOM) که هر کار میکنم و قتی میخوام تو دلفی لودش کنم حروف چرت مینویسه اما اگه با notpad++ به (Encode in UTF-8) تبدیلش کنم درست میشه اما میخوام برنامه ام خودش اینکار رو بکنه یا به هر روشی که شما دوستان ارائه بدین درست کار کنه...

Felony
دوشنبه 29 آبان 1391, 13:39 عصر
از چه نسخه ای از دلفی استفاده میکنید ؟

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

ayat255
دوشنبه 29 آبان 1391, 13:50 عصر
دلفی 7
نمیزاره فایل رو UPload کنم تو سایت
اما 1 فایل ساده که txt Save شده

ayat255
دوشنبه 29 آبان 1391, 13:53 عصر
ok شد.
اینم فایلش...

BORHAN TEC
دوشنبه 29 آبان 1391, 13:59 عصر
سلام
مشکل شما اینه که از یک نسخه خیلی قدیمی دلفی استفاده می کنید. توجه داشته باشید که دلفی 7 مبتنی بر یونیکد نیست و بخاطر همین با آن مشکل دارید. توجه داشته باشید که دلفی 2009 و نسخه های جدیدتر کاملاً یونیکد رو پشتیبانی می کنند که شما باید از این نسخه ها استفاده کنید.
موفق باشید...

ayat255
دوشنبه 29 آبان 1391, 14:21 عصر
پس فقط باید دلفی م رو Update کنم به 2009 به بالا...
ممنونم

BORHAN TEC
دوشنبه 29 آبان 1391, 14:26 عصر
پس فقط باید دلفی م رو Update کنم به 2009 به بالا...
دقیقاً همینطوره. اگر محدودیت دانلود داری میتونی نسخه Lite دلفی رو دانلود کنی که حجمش کمه. فقط توجه کن که نسخه 2009 به بالا باشه. یعنی یا Delphi 2009 باشه یا 2010 یا XE یا XE2 یا XE3 که فعلاً جدیدترین نسخه دلفیه.

ayat255
دوشنبه 29 آبان 1391, 19:39 عصر
من دلفی 2010 رو گرفتم و نصب کردم اما هنوزم همین مشکل رو دارم :(

Felony
دوشنبه 29 آبان 1391, 20:08 عصر
باید Encoding فایل رو برای بار کردن تعیین کنید ، مثلا :

Memo1.Lines.LoadFromFile('FileName', TEncoding.UTF8);

ayat255
دوشنبه 29 آبان 1391, 20:15 عصر
ممنون درست شد البته من از تابع زیر استفاده کردم:
UTF8ToString();

Emdad2001
جمعه 03 آذر 1391, 04:53 صبح
باید Encoding فایل رو برای بار کردن تعیین کنید ، مثلا :

Memo1.Lines.LoadFromFile('FileName', TEncoding.UTF8);


سلام اگه متن رو از وب بگیری میشه بازم فارسی دید ؟ مثلا متن تو وب UTF-8 ولی باز هم وقتی لود میکنم نا خوانا نشون میده همان متن رو از کامپیوتر لود میکنم درسته
روش لود کردن از وب رو میزارم شاید کاره من درست نیست میشه نظر بدید آقا ماهان ؟



var
Exstring:String
begin
idHTTP:=TIdHTTP.Create(nil);
try
ExString:=idHTTP.Get('http://.../Update.txt');
Memo2.Clear;
Memo2.Lines.Add(ExString);
finally
idHTTP.Free;
end;

Felony
جمعه 03 آذر 1391, 06:36 صبح
اول متنتون رو تو یک Memory Stream دانلود کنید ، بعد موقع خوندنش توسط متد LoadFromStream میتونید Encodingش رو مشخص کنید :


var
idHTTP: TIdHTTP;
MS: TMemoryStream;
begin
idHTTP := TIdHTTP.Create(nil);
MS:= TMemoryStream.Create;
try
idHTTP.Get('http://.../Update.txt', MS);
MS.Seek(0,soFromBeginning);
Memo1.Lines.LoadFromStream(MS, TEncoding.UTF8);
finally
MS.Free;
idHTTP.Free;
end;
end;