PDA

View Full Version : تبدیل کد اسکی 137 به 136 برای حرف "ی"



M.Ehsanifar
یک شنبه 20 آبان 1386, 23:40 عصر
سلام دوستان

من همه مطالب سایت در مورد مشکلات حروف فارسی به دلیل تفاوت در ویندوز ها رو خوندم وطبق گفته های شما کاراکتر ها با کد اسکی 152 رو به 223 و 137 رو به 136 تبدیل کردم ولی مشکل اینجاست که در تبدیل حرف ی از کد 137 به 136 این حرف به صورت جدا (ی آخر) در میان کلمه نمایش داده می شه . فایل rar تصویر کلمه "لبنیات" بعد از تبدیل رو هم ضمیمه کردم .
ضمنا پایگاه داده بوسیله Access یا SQL فرقی نداره . باز همین طوری می شه .
در تمام اسکی ها هیچ حرف "ی" دیگری وجود نداره 160 ، 156 ، 236 و 237 که هیچ کدوم جواب نمیدن .

این هم کد تبدیل :



var
S:string; i:integer;
begin
S:=Table1.field[0].value;
for i:=1 to length(s) do
begin
if ord(s[i]=237 then
S[i]:=chr(236);
end;
Table1.edit;
Table1.Field[0].value:=s;
Table1.post;
end;

لطفا منو راهنمایی کنید ... متشکرم

SYNDROME
دوشنبه 21 آبان 1386, 05:58 صبح
دوست عزیز کدها را به شکل زیر تبدیل کن.


IF Key = #152 Then Key := #223;
IF Key = #236 Then Key := #237;

یکی برای "ی" و دیگری برای "ک" است.
152 را به 223.
236 را به 237.
تبدیل کنید.
موفق باشید

dkhatibi
دوشنبه 21 آبان 1386, 06:42 صبح
در شکل ظاهری تفاوت ایجاد شده و گرنه پستهای 1 و 2 سک چیز می گن؟
سیندروم جان فرق اینا در چیه؟

Valadi
دوشنبه 21 آبان 1386, 08:13 صبح
جناب M.Ehsanifar
شما چرا از یونیکد استفاده نمی کنی که این مشکلات نباشه
کلمه یونیکد در سایت سرچ کن
ضمنا کامپونت رایگان و هم مقاله در این زمینه در سایت هست

SYNDROME
دوشنبه 21 آبان 1386, 17:22 عصر
if ord(s[i]=237 then
S[i]:=chr(236);;




236 را به 237.




در شکل ظاهری تفاوت ایجاد شده و گرنه پستهای 1 و 2 سک چیز می گن؟
سیندروم جان فرق اینا در چیه؟
دوستمان 237 را به 236 و من 236 را به 237 تبدیل کردم تا مشکل حل شود.
موفق باشید

M.Ehsanifar
دوشنبه 21 آبان 1386, 17:59 عصر
خیلی از راهنمایی هاتون ممنونم ولی متون در access به صورت Unicode ذخیره می شن واین کدی که من نوشتم داخل جدولی که در Access نگهداری می شه عمل می کنه و با تغییر کد اسکی 237 به 236 باید کلمه درست نشون داده بشه ولی اینطور نیست .

من کد تبدیل حرف "ک" رو حذف کردم . (150 به 223)

در ضمن من مقاله استاندارد سازی (unicode) رو خوندم ولی هنوز نمی دونم باید چکار کنم .
منظورم روی نوشته های داخل بانک اطلاعاتی و تعمیر اونهاست .

من از دلفی 7 استفاده می کنم و وقتی می خوام TNTUnicode رو نصب کنم پیغامی می ده که باید این فایل ها به روز بشن . البته روش نصب کامپوننت رو خوب نمی دونم . اگه ممکنه در این مورد هم منو راهنماییی کنید... متشکرم

M.Ehsanifar
دوشنبه 21 آبان 1386, 18:24 عصر
TNTUnicode رو نصب کردم (داخل سایت طریقه نصبش رو پیدا کردم) و بعد وقتی داخل TNTEdit نوشتم "لبنیات" باز هم حرف"ی" به صورت "ی" آخر نوشته می شه .
در ضمن همه نوشته ها راجع به unicode رو خوندم . هر جا که صحبت ازمشکل فارسی بود همه می گفتن unicode
، می پرسیدن با چی ، میگفتن TNTUnicode . بعد میگفتن ما از دلفی 7 استفاده می کنیم ، همه می گفتن دلفی 7 با یونی کد سازگار نیست . از همه مهمتر ADO از wideString پشتیبانی نمی کنه .
من که پاک گیج شدم .
در کل همه جوابها یک جور پاس کاری بودن . و در آخر فکر کنم راه حل فقط .net باشه . نظر شما دوستان چیه ؟

ebnsina
دوشنبه 19 آذر 1386, 17:18 عصر
TNTUnicode رو نصب کردم (داخل سایت طریقه نصبش رو پیدا کردم) و بعد وقتی داخل TNTEdit نوشتم "لبنیات" باز هم حرف"ی" به صورت "ی" آخر نوشته می شه .
در ضمن همه نوشته ها راجع به unicode رو خوندم . هر جا که صحبت ازمشکل فارسی بود همه می گفتن unicode
، می پرسیدن با چی ، میگفتن TNTUnicode . بعد میگفتن ما از دلفی 7 استفاده می کنیم ، همه می گفتن دلفی 7 با یونی کد سازگار نیست . از همه مهمتر ADO از wideString پشتیبانی نمی کنه .
من که پاک گیج شدم .
در کل همه جوابها یک جور پاس کاری بودن . و در آخر فکر کنم راه حل فقط .net باشه . نظر شما دوستان چیه ؟

دوست عزیز ما چند ساله که با دلفی 7 برنامه می نویسیم و در جاهایی هم که لازم شده از کامپوننت TNT استفاده کردیم و مشکل شما رو هم نداشتیم.

همه این موارد نشون میده که مشکل از سیستم عامل شما یا مورد دیگه ای از برنامه های شماست.
بهتره مراحل اینکار رو یکی یکی با نصب صحیح TNT و بعد استفاده اون در یک بانک مثالی پیگیری کنید و درصورتی که در این پروژه مثالی باز هم همین مشکل را داشتید متن پروژه مثالی را بگذارید تا دوستان دانلود کرده و مشکل را ببینند و بلکه حل هم بشود.

ضمناً درست است که ADO در دلفی 7 از WideString در بانکهای Access پشتیبانی نمی کند، اما وقتی رشته ای فارسی را در آن ذخیره و بازیابی می کنیم مشکلی ندارد !

ebnsina
دوشنبه 19 آذر 1386, 17:25 عصر
ضمنا یک مورد جا افتاده هم یادم اومد :

هر چند من در مورد صحت این مورد یقین ندارم، اما همیشه پس از نصب ویندوزم DLL مربوط به کی بورد فارسی رو با DLL مورد نظر خودم Replace میکنم تا جای نوشتن حروف "پ" و "ژ" درست بشن.

همین کار رو برای سیستم مشتری ها میکنم. لذا شاید مشکل اساساً از همین باشه که شاید این DLL در واقع حرف "ی" درستی رو برمیگردونه و ....

از دوستانی که در این مورد اطلاع دقیقتری دارند تقاضا دارم راهنمایی کنند تا ما هم چیزی یاد بگیریم.

SYNDROME
دوشنبه 19 آذر 1386, 21:01 عصر
هر چند من در مورد صحت این مورد یقین ندارم، اما همیشه پس از نصب ویندوزم DLL مربوط به کی بورد فارسی رو با DLL مورد نظر خودم Replace میکنم تا جای نوشتن حروف "پ" و "ژ" درست بشن.
همین کار رو برای سیستم مشتری ها میکنم. لذا شاید مشکل اساساً از همین باشه که شاید این DLL در واقع حرف "ی" درستی رو برمیگردونه و ....

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

dkhatibi
یک شنبه 09 دی 1386, 23:15 عصر
کد ک تبدیل شده ی جدید از نوع فارسی است؟ یا فقط مشکل را حل می کنه؟
در مرتب شازی با OrderBy مشکلی وجود ندراه اما در مرتب سازیهای دستی با الگوریتم خودم با جستجوی ک ی قبلی مشکل بر می خورم در ابتدا ظاهر می شه! چرا؟