برگزیده های پرشین تولز

مشکل :يونيكد يا فارسي نوشتن در myscql

weblogger

Registered User
تاریخ عضویت
24 دسامبر 2002
نوشته‌ها
506
لایک‌ها
6
سلام ببینید یک مشکلی که من پیدا کرده‌ام در مورد پشتیبانی نکردن Mysql از یونی‌کد هستش
که نتیجه‌ی مستقیمش اینه که نمی ‌شه به همین راحتی مطالب فارسی رو replace کرد مثلا من می خواهم با یه تابع ی فارسی رو با ی عربی replace کنم و برای این کار احتیاج به ایندکس کل دیتا بیس data base هست که تا اینجا مشکلی نیست ولی نحوه‌ی ذخیره‌ی کاراکترهای فارسی به صورت زیر هستش
(123) (456)
یعنی 2 تا د می گزاره جاش کسی می تونه به من کمک کنه در این رابطه؟ ممنون
 

ehsan

Administrator
مدیر انجمن
Administrator
تاریخ عضویت
5 دسامبر 2002
نوشته‌ها
7,949
لایک‌ها
3,918
محل سکونت
Internet
اولا كه يونيكد رو ساپورت ميكنه و خوب هم ميكنه. مگه اينجا الان فارسي ديده نميشه؟!
ديگه اينكه با استفاده از phpmyadmin به راحتي اين کار شدني.
حدس ميزنم که از access استفاده کردي و به مشکل برخوردي. اشکال از access يا برنامه هاي مشابه است و نه mysql.
 

weblogger

Registered User
تاریخ عضویت
24 دسامبر 2002
نوشته‌ها
506
لایک‌ها
6
:evil: من از access متنفرم!

ببين احسان اگركل سايت رو ديده باشي <a href='http://www.fara.ir' target='_blank'>http://www.fara.ir</a> ساراسر با mysql كار شده و همه‌ي ديتا بيس هم فارسي رو مي گيره
فكر كنم منظورم رو خوب نگفتم

ببين سيستم ذخيره شدن كاراكتر ها يونيكد نيست نه نشون دادن آون‌ها در ضمن نسخه‌اي تازه داره به بازار عرضه مي شه كه بتا بوده و يونيكد را ساپورت مي كنه روي قضيه رو نبين توي phpmyadmin ببين مي توني ي عربي رو كلا با ي فارسي replace كني عمرا همينطوري نمي شه يه تابع بايد نوشت كه كد رو بگيره ايندكس كنه تبديل كنه به كد قابل گفتگو و بعد همين عمليات ممعكوس صورت بگيره تا در نهايت ي replace بشه كه اونجا من يه مشكلي دارم
آرشيو اين رو هم نگاه كن بهداد اسپهبد يك چيزهايي رو توضيح داده در اين مورد ولي طرح مساله هستش farsiweb.info

منتظرم ممنون
 

weblogger

Registered User
تاریخ عضویت
24 دسامبر 2002
نوشته‌ها
506
لایک‌ها
6
<a href='http://forum.persiantools.com/viewtopic.php?p=7471#7471' target='_blank'>http://forum.persiantools.com/viewtopic.ph...php?p=7471#7471</a>

اينجا جواب دادم ببينش
 

knowhow

مدیران قدیمی
تاریخ عضویت
25 دسامبر 2002
نوشته‌ها
3,478
لایک‌ها
22
سلام

وبلاگر جان حق كاملا با تو است. متاسفانه در حال حاضر mysql از Unicode پشتیبانی نمی کنه بلکه همون کدهایی رو که ما می زنیم در دیتابیس ذخیره می شه و ما در موقع نمایش اونها رو تبدیل به Unicode می کنیم (با استفاده از enocder روی browser ها).
شاید در ورژن های بعدی supportبشه ولی فعلا کاریش نمی شه کرد.
در واقع اگه mysql از Unicode پشتیبانی کنه در دیتابیس هر کاراکتر فارسی باید یک کاراکتر فضا اشغال کنه در صورتی که الان به ازای هر یک کاراکتر 3 کاراکتر اشغال می شه.

برای اون قضیه convert من فکر می کنم ، بهترین کار اینه که کدهای اصلی رو بزنی که replace بشه. واسه اینکه کدها رو پیدا کنی کلمه مورد نظر رو در یک صفحه html و به صورت unicode ذخیره کن (با frontpage) و وقتی که صفحه اومد اون را با تغییر encoding به western european کد اون رو کپی کن. این دقیقا همون کدی است که در دیتابیس برای اون کلمه ذخیره شده است.
 

weblogger

Registered User
تاریخ عضویت
24 دسامبر 2002
نوشته‌ها
506
لایک‌ها
6
سلام بر knowhow عزيز

من راه‌تو را مي فهمم اما حجم ديتاي من خيلي زياده و ممكنه به مشكل بر خورم با اين وجود امتحانش مي كنم

من كاري كه كمردم اين بود
به ازاي هر كاراكتر 2 تا 3 تاي كد ذخيره مي شه كه اون كدها رو پيدا كردم و جايگزين كردم با كد دلخواه مثلا ي عربي اما ريخت به هم مثلا كلماتي رو كه 2 تا ي پشت سرهم به‌كار رفته بود رو تنوين گذاشت !
اين كاري هم كه گفتي تو همين مايه هاست در حقيقت بايد بتوني با زبان قابل فهم طرف باهاش گفتگو كني و براي اين كار بايد ببيني به هر چيزي چه كدي مي ده و يا به قول تو كاراكتر و بعد بتوني عمليات روش انجام بدي

حالا من اين راه تو رو كه پيشنهاد دادي آزمايش مب كنم ببينم چه مي شود اگر راه ديگري به ذهنت رسيد حتما لطف كن و در ميان بگزار
 

knowhow

مدیران قدیمی
تاریخ عضویت
25 دسامبر 2002
نوشته‌ها
3,478
لایک‌ها
22
وبلاگر جان <a href='http://www.iranphp.net/examples.php?action=showcat&category=2' target='_blank'>http://www.iranphp.net/examples.php?action...wcat&category=2</a>
این صفحه رو هم یک نگاهی بکن.

شاید از توی کدهایی که برای تبدیل کاراکتر ست ها به هم استفاده کرده چیزی دستگیرت بشه.
یا مثلا شاید مجبور شی ابتدا کل یک سلول اطلاعاتت رو با استفاده از convertor ها به unicode تبدیل کنی (همونطور که می دونی Php یونیکد رو پشتیبانی می کنه) بعد توی php و با استفاده از توابع اون کار تغییر اطلاعاتت رو انجام بدی و بعد تبدیلش کنی به windows1256 و در دیتابیس ذخیره کنی.

من امتحان نکردم ولی شاید اصلا اگه اطلاعاتت رو از دیتابیس بخونی و در یک آرایه بریزی در php بتونی بدون مشکل کار replace رو انجام بدی چون اونجا یونیکد پشتیبانی می شود.
 

weblogger

Registered User
تاریخ عضویت
24 دسامبر 2002
نوشته‌ها
506
لایک‌ها
6
دارم روش كار مي كنم اتفاقي افتاد خبرت مي كنم ممنونم از جواب هات
 
بالا