PDA

View Full Version : حل مشکل یونیکد



aLiReZa hOsSeInI
پنج شنبه 18 خرداد 1385, 06:02 صبح
خوب بلاخره با کلی دردسر تونستم mysql را به دلفی بشناسونم اونم با کمک
mysql odbc + ADO.
اما الان یه مشکل دارم
من دیتابیس mysql را اینگونه تنظیماتش را تعریف کردم:
Table Type: MyISAM
Character set: utf8
Collation: utf8-general_ci

اما مثلا وقتی داخل ادیت باکس متنی فارسی وارد میکنم و بعد میگم برو فلان جا ذخیره اش کن اونو درست ذخیره نمیکنه همینطور موقع نشون دادنش.

خوب علتش هم اینه که اونو utf تنظیم شده و دلفی نه پس نیاز به یه انکد هستش این وسط:متفکر:

دلفی 8 و 2006 یونیکد ساپورت هستن اما مسئله اینه که سفارش کار من باید تحویل سورس با دلفی 7 هست و این دلفی 7 خنگه یونیکد را بصورت کلاس ساپورت نمیکنه:گریه:

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

ghabil
پنج شنبه 18 خرداد 1385, 10:54 صبح
همینجا این مباحث چند بار توضیح داده شده اند ، لطفا یک سرچ بزنید ...
ضمنا دلفی VCL در هیچ ورژنی Unicode رو پشتیبانی و فقط دلفی دات نت این کار رو میکنه ، UTF8 هم استاندارد وب هستش و ... سرچ کنید همش هست

aLiReZa hOsSeInI
پنج شنبه 18 خرداد 1385, 12:16 عصر
نه منظور من از ورپن هشت همون دات نت هستش
و درسته این استاندارد وب هستش
راستش من اینجا یه بار سرچ کردم و همه تاپیک های مربوطه نیمه کارا ول شدن و هیچ نتیجه نهایی و بدرد بخوری پیدا نکردم
ممنون میشم یه کمکی بفرمایید که چطوری این مشکل را حل کنم

ghabil
پنج شنبه 18 خرداد 1385, 16:48 عصر
وروژن فرقی نداره در دلفی 2005 و 2006 هم اگر VCL Form کار بکنید بازهم یونیکد رو پشتیبانی نمیکنه مگر اینکه دات نت استفاده کنید که با کدهای قبلی همخوانی نداره...

منظورت از درست ذخیره نمیکنه چیه ؟ اون توضیحاتی که قبلا در مورد Stringی بودن VCL و اتفاقاتی که ممکنه در زمان تبدیل String به WideString بیفته رو خوندی ؟
من با MySQL کار نکردم ، آیا می تونی بجای UTF8 کدپیج 1256 یا UNICODE ست بکنی ؟
برای تست یکبار اطلاعات رو قبل از نشون دادن با تابع Utf8ToUnicode یا Utf8ToAnsi تبدیل کن بین درست میشه ، بعد نتیجه اینارو بگو ببینیم چی کار میشه کرد... به هر حال UTF8 برای یک محیط 1256 اصلا مناسب نیست...

aLiReZa hOsSeInI
پنج شنبه 18 خرداد 1385, 18:19 عصر
آره عزیز جالب بود قبلا خوندم
اما در مورد mysql من اگه بزارمش روی 1256 یا همون اربیک و دلفیم همینطور مشکلی ندارم جز اینکه وقتی اطلاعات ذخیره شد اون چند حرف مثل گ - چ - پ - ژ بصورت علامت سئوال و تعجب ذخیره شدن.
اون دو تا تابع هم امتحان کردم قبلا هیچ فایده ایی نداشت
البته اینو بهت بگم که هر کدپیجی را می تونم روی مای اس کیوال تنظیم کنم از این نظر موردی نیست تنها مشکل اینه که اگه غیر از utf8 و unicode باشه فارسی درست ذخیره نمیشه.

ghabil
پنج شنبه 18 خرداد 1385, 18:39 عصر
خب وقتی Unicode میزاری چی میشه ؟

aLiReZa hOsSeInI
جمعه 19 خرداد 1385, 05:10 صبح
بازم این مشکل را دارم آخه دلفی 7 که باز unicode را نمیشناسه.

ghabil
جمعه 19 خرداد 1385, 10:50 صبح
یعنی اطلاعات بصورت علامت سوال میرن توی دیتابیست ؟

aLiReZa hOsSeInI
جمعه 19 خرداد 1385, 12:27 عصر
درسته عزیز

aLiReZa hOsSeInI
جمعه 19 خرداد 1385, 15:01 عصر
یه مطلب
من با اکسس تا حالا زیاد کار نکردم کد پیشفرضش چیه چون با دلفی بصورت پیشفرض مشکلی نداره؟

ghabil
جمعه 19 خرداد 1385, 15:34 عصر
یکبار اطلاعات رو با ADOCommand بفرست (یعنی با InsertInto) چون commandText در AdoCommand استثنا Wide هست ببین دردست میشه ...

اکسس یونیکده، ممکنه درایورت نمیتونه درست Convert کنه

aLiReZa hOsSeInI
شنبه 20 خرداد 1385, 06:00 صبح
مطمئنی عزیز!!!!!!!!!
من الان تست کردم میبینم که اکسس latin1-cp1250 هستش!!!!!!!
و دلفیو می تونه روی این بدون استفاده از هیچ تغییری اطلاعات فارسی را درست داخل فیلدها ذخیره کنه اما روی mysql وی این حالا کاراکترها میریزه بهم.
به نظرت چه ترفندی میشه سرش زد؟

aLiReZa hOsSeInI
یک شنبه 21 خرداد 1385, 16:24 عصر
علی جان
ممنون یک دنیا ممنون
به خوب نکته ایی اشاره کردی ایراد از درایور odbc بود که mysql داده بیرون الان کامپوننت MySQL Access را تهیه کردم و از قسمت Charset کانکشنش utf8 را انتخاب کردم و مشکل حل شد.
یک دنیا ممنون که اینطور با حوصله راهنماییم کردی.