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

چرا اطلاعات در دیتابیس بد ذخیره میشه؟

kvm

Registered User
تاریخ عضویت
10 جولای 2009
نوشته‌ها
471
لایک‌ها
26
چرا اطلاعات فارسی در دیتابیس به صورتبزرگترین سیستم همکاری در فر... دخیره میشه؟چطوری میتونم درستش کنم؟
 

TinySkin

Registered User
تاریخ عضویت
17 می 2009
نوشته‌ها
1,305
لایک‌ها
45
محل سکونت
تهران
شما بايد از طريق phpmyadmin ديتابيست رو utf-8 بكني تا درست بشه
 

imangh

Registered User
تاریخ عضویت
17 می 2006
نوشته‌ها
44
لایک‌ها
1
از دستور SET NAMES برای تنظیم collation استفاده کنید.
 

Rammstein

کاربر تازه وارد
تاریخ عضویت
21 آگوست 2006
نوشته‌ها
189
لایک‌ها
56
محل سکونت
شیراز
من با phpmyadmin همه جا رو به utf8_persian_ci تغيير دادم (ديتابيس ، جدول ، فيلد)
اما هنوز اون مشكل دوستون رو دارم
از دستور SET NAMES برای تنظیم collation استفاده کنید.
ميشه دستورش رو يه كم بيشتر توضيح بديد؟
يعني قبلا از ايجاد ديتابيس از طريق query ، ميشه نوع collation رو تعيين كرد؟
 

imangh

Registered User
تاریخ عضویت
17 می 2006
نوشته‌ها
44
لایک‌ها
1
بعد از ایجاد اتصال به بانک و انتخاب بانک پیش‌فرض دستور زیر را نیز فراخوانی کنید:
PHP:
mysql_query("SET NAMES 'utf8'");
 

Rammstein

کاربر تازه وارد
تاریخ عضویت
21 آگوست 2006
نوشته‌ها
189
لایک‌ها
56
محل سکونت
شیراز
ممنون
مشكل حل شد
اما حروف فارسي ذخيره شده تو جدول، تو phpmyadmin به اين صورت نشون داده ميشه :

&#كد اسكي كاراكتر;

كه كد اسكي كاراكتر يه كد 4 رقمي هست

آيا اين تعداد كاراكترهاي ذخيره شده براي حروف فارسي طبيعيه؟
بعدا كه حجم ديتابيس زياد شد مشكلي پيش نمياد؟

پ ن : البته الان به اين نتيجه رسيدم كه اينجا هم از همين روش استفاده شده:rolleyes:
 

ariobarzan1

Registered User
تاریخ عضویت
19 دسامبر 2007
نوشته‌ها
3,139
لایک‌ها
180
سن
49
محل سکونت
شيراز
راهي هست براي تغيير اين زرگترین سیستم کدها به فارسي اخه ديتابيس ecommerce به صورت کامل به اين شکل هست و اگه تيبل ها رو هم تبديل کنم به UTF-8 اين مشکل همچنان هست
 

imangh

Registered User
تاریخ عضویت
17 می 2006
نوشته‌ها
44
لایک‌ها
1
ممنون
مشكل حل شد
اما حروف فارسي ذخيره شده تو جدول، تو phpmyadmin به اين صورت نشون داده ميشه :

&#كد اسكي كاراكتر;

كه كد اسكي كاراكتر يه كد 4 رقمي هست

آيا اين تعداد كاراكترهاي ذخيره شده براي حروف فارسي طبيعيه؟
بعدا كه حجم ديتابيس زياد شد مشكلي پيش نمياد؟

پ ن : البته الان به اين نتيجه رسيدم كه اينجا هم از همين روش استفاده شده:rolleyes:

فکر می کنم مشکل شما از کدپیج صفحه HTML است.
آیا فایل HTML که فرم در آن است دارای کدپیج UTF-8 هست؟
 

imangh

Registered User
تاریخ عضویت
17 می 2006
نوشته‌ها
44
لایک‌ها
1
راهي هست براي تغيير اين زرگترین سیستم کدها به فارسي اخه ديتابيس ecommerce به صورت کامل به اين شکل هست و اگه تيبل ها رو هم تبديل کنم به UTF-8 اين مشکل همچنان هست

فکر می کنم با این روش بتوانید مشکل را برطرف کنید:
1- نوع فیلد ها را به Binary تغییر دهید
2- نوع را به varchar باز گردانید اما این بار Collation مناسب یعنی utf8 را برای فیلد ها انتخاب کنید.
 

ariobarzan1

Registered User
تاریخ عضویت
19 دسامبر 2007
نوشته‌ها
3,139
لایک‌ها
180
سن
49
محل سکونت
شيراز
فکر می کنم با این روش بتوانید مشکل را برطرف کنید:
1- نوع فیلد ها را به Binary تغییر دهید
2- نوع را به varchar باز گردانید اما این بار Collation مناسب یعنی utf8 را برای فیلد ها انتخاب کنید.

ممنون جواب داد
ولي يه مسئله اي هست در قسمت هايي که نوع Text هست چيکار بايد کرد
وقتي که Text رو تبديل مي کنم با باينري ازم يه عدد مي خواهد که وارد کنم در قسمت Length/Values
با تشکر
 

Profession@l

همکار بازنشسته
تاریخ عضویت
12 می 2007
نوشته‌ها
2,857
لایک‌ها
317
محل سکونت
Sky

imangh

Registered User
تاریخ عضویت
17 می 2006
نوشته‌ها
44
لایک‌ها
1
برای داده های text به جای binary از BLOB استفاده کنید.
(در ضمن عددی که از شما برای نوع Binary می خواهد طول فیلد است که حداکثر 255 می تواند باشد.)
 

ariobarzan1

Registered User
تاریخ عضویت
19 دسامبر 2007
نوشته‌ها
3,139
لایک‌ها
180
سن
49
محل سکونت
شيراز
برای داده های text به جای binary از BLOB استفاده کنید.
(در ضمن عددی که از شما برای نوع Binary می خواهد طول فیلد است که حداکثر 255 می تواند باشد.)

براي داده هاي تکست درست عمل کرد دستتون درد نکنه ولي يه مشکلي دارم که در زير شرح دادم کاري به داده هاي تکست نداره يه مشکل کلي هست اش:

کاري که گفتيد انجام دادم حالا در صفحه اصلي اسکريپت تيترها به اين شکل ديده ????? مي شه:
aba0ce79e64d4b58b2ce.jpg


کاري که کردم ابتدا با برنامه يا مد آماده اي که براي کانورت کل ديتابيس بود همه Collation رو به utf-8 تبديل کردم و الان هر جايي از ديتابيس که مراجعه مي کنم utf8_general_ci هست
بعد در تيبل products_description.sql که مربوط شرح محصولات هست با انتخاب تيبل products_name که مربوط به عنوان محصولات هست کاري که شما در بالا گفتيد يعني تبديل به binery رو انجام دادم و کاري که گفتيد کردم بعد مشاهده کردم که کليه تايتبل ها در ديتابيس به فارسي تبديل شده اما مشکلي که هست در سايت به شکلي که تصويرش رو گذاشتم نمايش مي ده که ديگه نمي دونم اين مشکل رو چه طور بايد حل کرد
با تشکر
 
Last edited:

imangh

Registered User
تاریخ عضویت
17 می 2006
نوشته‌ها
44
لایک‌ها
1
این به این دلیل است که شما در سایت خود به MySQL نگفتید که از utf8 استفاده می کنید.
برای رفع این مشکل باید بعد از فراخواهنی تابع mysql_connect از دستوری که در ارسال 6# همین تاپیک نوشتم استفاده کنید.
 

ariobarzan1

Registered User
تاریخ عضویت
19 دسامبر 2007
نوشته‌ها
3,139
لایک‌ها
180
سن
49
محل سکونت
شيراز
این به این دلیل است که شما در سایت خود به MySQL نگفتید که از utf8 استفاده می کنید.
برای رفع این مشکل باید بعد از فراخواهنی تابع mysql_connect از دستوری که در ارسال 6# همین تاپیک نوشتم استفاده کنید.

منظورتون اينه که در خود اسکريپت جايي که مربوط به ديتابيس و ارتباط مي شه بايد از يک دستور که ديتابيس رو به صورت utf-8 فراخوني کنه استفاده کنم
اگه منظورتون رو درست متوجه شده باشم همينطور هست و با يکي دو تا دستور اين مشکل هم برطرف شد
يه راهنماي اگه مي شه بفرمائيد چگونه مي شه بدون اينکه محتويات ديتابيس رو تبديل به utf-8 بکنم
چگونه مي شه کل جداول رو تبديل کنم به utf-8 و بعد از تبديل جداول کليه تيبل ها رو يکي يکي باز کرد و استراچکر رو انتخاب و طبق دستوري که فرموديد يکي يکي عمليات باينري و ... رو انجام داد
چون يک مشکلي هست با اين کانورتر و وقتي که همه ديتابيس رو تبديل مي کنه utt8 بعد که از عمليات تبديل به باينري استفاده مي کنه ديگه فونت ها فارسي نمي شه
 

ariobarzan1

Registered User
تاریخ عضویت
19 دسامبر 2007
نوشته‌ها
3,139
لایک‌ها
180
سن
49
محل سکونت
شيراز
فکر کنم بايد از قسمت عمليات يا همون operation جدول رو انتخاب کنم و بعد به utf8 تبديل کنم
 

ariobarzan1

Registered User
تاریخ عضویت
19 دسامبر 2007
نوشته‌ها
3,139
لایک‌ها
180
سن
49
محل سکونت
شيراز
اقا شرمنده خيلي مزاحمتون شدم
يکي از تيبل ها set('1','2') هست يعني وقتي وارد تيبل مي شم که به باينري تبديل کنم روي گزينه set هست اين رو چيکار کنم
يکي ديگه از تيبل ها char هست اين رو هم روي باينري بزارم يا بايد يه حالت ديگه تعيين کنم
با تشکر
 

imangh

Registered User
تاریخ عضویت
17 می 2006
نوشته‌ها
44
لایک‌ها
1
اگر خودتون برنامه نویسی کار را انجام ندادید و یا از سیستم اپن سرس استفاده می کنید می توانید کار را به کس دیگه ای بسپارید تا اصلاحات را انجام بده.
می تونم برای اینکار سایت ParsCoders.com را معرفی کنم بهتون.
فقط نوع های داده فارسی دارند را تبدیل کنید و بعد از تبدیل فراموش نکنید که داده به نوع اولیه و با collation جدید بازگردانده شود.
انواع set و enum را نمی خواد کاری کنید.
 

ariobarzan1

Registered User
تاریخ عضویت
19 دسامبر 2007
نوشته‌ها
3,139
لایک‌ها
180
سن
49
محل سکونت
شيراز
اگر خودتون برنامه نویسی کار را انجام ندادید و یا از سیستم اپن سرس استفاده می کنید می توانید کار را به کس دیگه ای بسپارید تا اصلاحات را انجام بده.
می تونم برای اینکار سایت ParsCoders.com را معرفی کنم بهتون.
فقط نوع های داده فارسی دارند را تبدیل کنید و بعد از تبدیل فراموش نکنید که داده به نوع اولیه و با collation جدید بازگردانده شود.
انواع set و enum را نمی خواد کاری کنید.

خير دوست عزيز برنامه نويسي کار نکردم
ولي خودم چون خيلي اين مسائل رو علاقه دارم يادش گرفتم و همينطوري تجربي کار مي کنم
تا الان هم تونستم رديف کنم دارم يکي يکي همه رو اوکي مي کنم انشاالله اگه مشکلي بود مطرح مي کنم راهنمايي بفرمائيد
اون قسمت هايي که فرموديد بله متوجه شدم فقط تبديل مي کنم به utf8 و ديگه تبديل به باينري نمي کنم
با تشکر
 
بالا