PDA

View Full Version : encoding



1485159
شنبه 16 خرداد 1388, 17:01 عصر
چطور بفهمم که encoding یه فایل متنی چیه؟
ممنون.

vcldeveloper
شنبه 16 خرداد 1388, 17:05 عصر
در چه نسخه ایی از دلفی؟

1485159
شنبه 16 خرداد 1388, 21:02 عصر
توی دلفی 2009
ممنون.

vcldeveloper
یک شنبه 17 خرداد 1388, 09:53 صبح
در دلفی 2009 کلاس TEncoding وجود داره، شما می تونید داده مورد نظرتان را در یک آرایه بریزید، و به متد GetBufferEncoding آن بدهید، تا Encoding داده را برای شما مشخص کند.

1485159
یک شنبه 17 خرداد 1388, 10:08 صبح
در دلفی 2009 کلاس TEncoding وجود داره، شما می تونید داده مورد نظرتان را در یک آرایه بریزید، و به متد GetBufferEncoding آن بدهید، تا Encoding داده را برای شما مشخص کند.

اونو که خودم میدونم....
طرض استفتده کردنش رو بلد نیستم..
اگه یه نمونه بزارید ممنون میشم

vcldeveloper
یک شنبه 17 خرداد 1388, 13:56 عصر
var
Buffer : TBytes;
Encoding : TEncoding;
Stream : TFileStream;
begin
Encoding := nil;
Stream := TFileStream.Create('Test.txt',fmOpenRead + fmShareDenyWrite);
try
SetLength(Buffer, Stream.Size);
Stream.Read(Buffer[0], Stream.Size);
TEncoding.GetBufferEncoding(Buffer,Encoding);

if Encoding = TEncoding.Default then
ShowMessage('Default')
else
if Encoding = TEncoding.Unicode then
ShowMessage('Unicode')
else
if Encoding = TEncoding.UTF8 then
ShowMessage('UTF8')
else
if Encoding = TEncoding.ASCII then
ShowMessage('ASCII')
else
if Encoding = TEncoding.UTF7 then
ShowMessage('UTF7');
finally
Stream.Free;
end;
end;

1485159
یک شنبه 17 خرداد 1388, 15:03 عصر
SetLength(Buffer, Stream.Size);
Stream.Read(Buffer[0], Stream.Size);
من هر چی فکر کردم نفهمیدم که کد بالا چیکار میکنه؟؟
در ضمن این پایینی چیکار میکنه؟

fmOpenRead + fmShareDenyWrite

1485159
یک شنبه 17 خرداد 1388, 15:04 عصر
متغیر TBytes از نوع عدد هست یا .....

vcldeveloper
یک شنبه 17 خرداد 1388, 18:59 عصر
من هر چی فکر کردم نفهمیدم که کد بالا چیکار میکنه؟؟
در ضمن این پایینی چیکار میکنه؟
اینها را باید از Help دلفی بخوانید.

در هر حال، دو خط اولی که درباره شان پرسیدید داده های Stream را در داخل بافر کپی می کنند.
fmOpenRead+fmShareDenyWrite هم به FileStream میگه که فایل را برای خواندن باز کنه، و سایر برنامه ها هم به فایل دسترسی خواندنی داشته باشند، نه نوشتنی.


متغیر TBytes از نوع عدد هست یا .....
TBytes متغیر نیست، بلکه یک نوع (Type) هست. اگر روی آن Ctrl+Click می کردید، می دیدید که بصورت آرایه ایی از بایت ها تعریف شده.

Delphi Coder
دوشنبه 25 خرداد 1388, 05:20 صبح
از کجا می فهمه که encoding فایل چی هست؟ فایل text که header یا جای رزرو شده ای نداره. نمیدونم شاید تو ذهن من encoding درست جا نیافتاده. میشه سورس اونو برداشت و تو Delphi 7 استفاده کرد؟

khoshblagh
دوشنبه 25 خرداد 1388, 07:46 صبح
کسی میتونه توضیح بده encoding چیه و چه استفاده ای داره . متشکرم

shervin farzin
دوشنبه 25 خرداد 1388, 11:13 صبح
سلام
فرض كنيد به شما يك متن ميدن ( رشته اي كه تشكيل شده از كاركتر هاي مختلف ) و از شما
ميخوان تا اين متن رو به صورت يك فايل تبديل و ذخيره كنيد . از اونجا اي كه ميدونيم ساختار فايلها
براي ذخيره فقط تشكيل ميشه از بيتها ، به اين فكر ميفتيم كه چطور ميشه كاركتر هاي مختلف
اين متن رو به صورت بيتي تبديل كنيم . نتيجه اي كه بعد از فكر كردن به اين مسئله بهش ميرسيد
توليد سيستمي هست كه هر كاركتر رو Map كنه به ترتيبي از بيتها . به اين سيستم Encoding
گفته ميشه . در اكثر زبانهايي كه تعداد كمي كاركتر دارند ( مثل انگليسي ) عموما اين بازه بيتهاي
استفاده شده در كد بين 0 تا 255 هست ، اما براي زبانهايي كه از هزاران كاركتر استفاده ميكنن
( مثل مناطق خاصي از شرق آسيا ) اين سيستم Encoding بايد بسيار پيچيده تر طراحي بشه .
در عبارت ساده تر اگر بخوايم Encoding رو با Font مقايسه كنيم ، بايد گفت Font تعيين ميكنه كه
يك كاركتر چطور در صفحه نمايش داده بشه ولي Encoding تعيين ميكنه كه يك كاركتر چطور در
فايل ذخيره بشه . يكي از معروف ترين سيستم هاي Encoding كه در حال حاضر استفاده ميشه UTF-8
هست كه قابليت ذخيره تمامي كاركتر هاي ASCII و بخش زيادي از كاركترهاي ساير زبانها رو داره .
موفق باشيد .