PDA

View Full Version : مشکل unicode در C# و mysql



yasercomeng
شنبه 11 خرداد 1387, 19:14 عصر
سلام من دارم یه برنامه با پایگاه داده mysql و C#2008 مینویسم اما موقع درج اطلاعات فارسی تویه دیتابیس این فیلدها با علامت سوال پر میشوند.در ضمن من تویه طراحی جدول هام مقدا رcollate تمام اون سطر هایی که میخوام فارسی باشند رو برابر utf8_persian_ci قرار دادم و charset جدول ها هم utf8 است ولی بازم مشکل وجود داره.
اشکال از کجا میتونه باشه؟

rezaiy.ali
شنبه 11 خرداد 1387, 19:22 عصر
با سلام
اگر سوالت را در بخش پایگاه داده MySQL مطرح کنی زود تر به جواب می رسی
موفق باشید

linux
شنبه 11 خرداد 1387, 19:39 عصر
سلام من دارم یه برنامه با پایگاه داده mysql و C#2008 مینویسم اما موقع درج اطلاعات فارسی تویه دیتابیس این فیلدها با علامت سوال پر میشوند.در ضمن من تویه طراحی جدول هام مقدا رcollate تمام اون سطر هایی که میخوام فارسی باشند رو برابر utf8_persian_ci قرار دادم و charset جدول ها هم utf8 است ولی بازم مشکل وجود داره.
اشکال از کجا میتونه باشه؟
تنظیمات ویندوز

محمدامین شریفی
شنبه 11 خرداد 1387, 19:48 عصر
تنظیمات ویندوز
درست هست احتمالا فونت پارسی تو رایانه ات نیست.
اگه هست احتمالا هنگام ذخیره برنامه c# ات اونو با utf8 with sign ذخیره نکردی

yasercomeng
یک شنبه 12 خرداد 1387, 15:38 عصر
من تویه خود پروژه C# ام اصلا متن فارسی ندارم که بخوام اطلاعات رو به صورت utf8 ذخیره کنم بلکه وقتی برنامه اجرا شد اطلاعاتی که کاربر وارد میکنه فارسی میتونه باشه اون موقع است که این اتفاق میوفته.حالا چی؟

محمدامین شریفی
یک شنبه 12 خرداد 1387, 18:14 عصر
خوب عزیزم چه فرقی می کنه تو یا یکی دیگه.
مثل اینه کهmicrosoftبگه من تو نرم افزار office فقط انگلیسی نوشتم.

linux
یک شنبه 12 خرداد 1387, 18:57 عصر
من تویه خود پروژه C# ام اصلا متن فارسی ندارم که بخوام اطلاعات رو به صورت utf8 ذخیره کنم بلکه وقتی برنامه اجرا شد اطلاعاتی که کاربر وارد میکنه فارسی میتونه باشه اون موقع است که این اتفاق میوفته.حالا چی؟
این موارد را چک کن.

yasercomeng
دوشنبه 13 خرداد 1387, 23:18 عصر
همه چی تنظیمه یعنی این چیزا از قبل هم تنظیم بوده ولی من همچنان در وصف این مشکل مانده ام.
مطمئنید که مشکل از یونیکد های mysql نیست؟

محمدامین شریفی
سه شنبه 14 خرداد 1387, 09:38 صبح
همه چی تنظیمه یعنی این چیزا از قبل هم تنظیم بوده ولی من همچنان در وصف این مشکل مانده ام.
مطمئنید که مشکل از یونیکد های mysql نیست؟
چون من در mysql تبحر ندارم دوست ندارم دخالت کنم احتمالا LINUX جان :قلب:کمکت می کنه
در sqlserver2005
اگه کاربران مثلا از textbox چیزی را وارد پایگاه داده کنند و پارسی هم وارد کنند.
باید field را با format ای مثل nvarchar بسازیم.
پیروز باشید

Unique
سه شنبه 21 خرداد 1387, 10:34 صبح
سلام

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

روی Localhost خودتون اگه وبندوز شما روی فارسی باشه ! منظورم تنظیمات regional هست !
و Character Set DB توی MySql را هم utf8 بذارین ، بدون مشکل میشه فارسی نوشت و خوند !

اما حالا روی سرور که English هست چیکار باید کرد ! خیلی ساده و مسخره یه CharSet=utf8 بگذارید آخر ConnectionString و مشکل عجیب و پیچیده حله !

جالبه اصل مطلبی هم که پیدا کردم را ببینید :
http://liadprog.blogspot.com/2007/10/aspnet-20-with-mysql-412-unicode.html

Unique
سه شنبه 21 خرداد 1387, 10:39 صبح
راستی یادم رفت بگم ! که این مشکل من با MySql Connector بود ! و با درایور های دیگه شاید موضوعات دیگه مطرح باشه ! مثلا ODBC ممکنه فرق کنه !

linux
سه شنبه 21 خرداد 1387, 15:26 عصر
راستی یادم رفت بگم ! که این مشکل من با MySql Connector بود ! و با درایور های دیگه شاید موضوعات دیگه مطرح باشه ! مثلا ODBC ممکنه فرق کنه !
کافی هست این را مانند سایر کوئری ها اول از همه اجرا کنید

SET NAMES 'utf-8'
مثلا برای php

mysql_query("SET NAMES 'utf-8'");

کل داستان هم اینجا (http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html)هست

yasercomeng
دوشنبه 10 تیر 1387, 16:53 عصر
از زحمتي كه همه ي دوستان كشيدند متشكرم مخصوصا از UNIX و UNIQUE عزيز اين دو تا راهنمايي آخر مشكل منو حل كرد.
دوست عزيز(UNIQUE) جدا اسمي كه انتخاب كردي برازندته.عالي بود اگه ميشد (خيلي خيلي زياد) اون دكمه تشكر رو فشار ميدادم.:تشویق::تشویق::تشویق:
واقعا ممنونم.
از UNIX عزيز هم به خاطر لينك خوبشون ممنونم.:تشویق::تشویق::تشویق:

وضعيت اين آدم هم يه چيزي تو مايه هاي ما بوده ها:


I've looked up at all the forums and I have tried everything. I mean really - EVERYTHING.


Eventually I've tried it all. I've set every variable on the server to UTF-8. I've changed all the database, tables and fields collations to the same collation - utf8_unicode_ci.


But the problem was not corrected.



--------------------------------------------------------------------------------------------------

همه چيز اگر تيره تر مينمايد روشن مي شود زود
تنها بدان اين حقيقتي است باراني بايد تا رنگين كماني برآيد.:متفکر:

sixeleven
جمعه 15 شهریور 1387, 14:17 عصر
خوب مثلا من با c# winform دارم به mysql وصل میشم و به صورت odbc دارم کار میکنم، syntax دستور فوق چی میشه و باید کجای برنامه ام بزارمش؟



string ConStr = "DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;PORT=;DATABASE=test;UID=r oot;PWD=;OPTION=3;

OdbcCon = new System.Data.Odbc.OdbcConnection(ConStr);
OdbcCon.Open();


OdbcCom = new System.Data.Odbc.OdbcCommand("insert into tb values('" + str + "')", OdbcCon);

OdbcCom.ExecuteNonQuery();


OdbcCon.Close();
کارم خیلی گیره ، پیلیز هلپ می

yasercomeng
یک شنبه 17 شهریور 1387, 21:54 عصر
البته يه سري مراسم ها قبل از اين كار داره كه بايد اونا رو بدوني مثل نصب برنامه ي mysqlconnector و اظافه كردن DLL مربوط به اون به پروژه ات و به جاي انتخاب odbc از پنجره ي dataprovider هم بايد mysql رو انتخاب كني. اگه خواستي بگو تا كامل آموزشو اينجا بذارم.

server=localhost;user id=root;database=DB;password=123;charset=utf8

afsharm
دوشنبه 18 شهریور 1387, 13:29 عصر
تقزیبا مطمئن هستم که مشکل مربوط به سی شارپ نیست. چون خود دات نت همه چیز رو به صورت یونیکد ذخیره می‌کنه. این طور وقت‌ها معمولا مشکل از سمت دیتابیس هستش. در MSSQL اگر نوع فیلدها را از نوع nvarchar تعریف کنید، مشکل حل می‌شود. دقت کنید که ممکن است اطلاعات در بانک اطلاعاتی هم درست ثبت شده باشد و مشکل صرفا مربوط به نمایش آن باشد.