PDA

View Full Version : اتصال به بانک my sql و مشکل فارسی



mohammad-gh
دوشنبه 17 آبان 1389, 11:39 صبح
با سلام
بعد از مدتی تلاش تونستم به بانک mysql رو هاستم وصل بشم و اطلاعات رو به اون insert کنم ، اما حالا مشکل جدید ی به نام تبدیل فارسی به ؟؟؟ پیش آمده

قبل از همه چیز باید بگم که تمام بحثهای مربوط به این مطلب رو خوندم و یکی یکی امتحان کردم که در زیر لیستی از اونها رو آوردم

1- با dll مربوط به اتصال به بانک my sql به آن وصل شدم
2- charset بانک، جدول و فیلدها رو روی utf گذاشتم(utf_persian , ... )رو هم امتحان کردم
3- قبل از دستور insert دو دستور زیر رو دادم


SET NAMES utf8
SET CHARACTER SET utf8

4- با باینکه به جای فارسی ؟؟؟ می نوشت رفتم و خروجی گرفتم و charset صفحه html رو بهutf گذاشتم

ولی باز هم به جای فارسی ??? نشون میده
دیگه مغزم کار نمیکنه، الان دو روزه مشغول این کارم
این هم نمونه کدهام :


For i = 0 To Val(stutable.Rows.Count) - 1
'------------------------------------
Dim objComm2 As MySqlCommand = New MySqlCommand()
objComm2.Connection = webcon
objComm2.CommandText = "SET NAMES utf8"
'------------------------------------
Dim objComm3 As MySqlCommand = New MySqlCommand()
objComm3.Connection = webcon
objComm3.CommandText = "SET CHARACTER SET utf8"
'---------------------§«¢ي© ي©ي§ §ں§ى ىں----------------
Dim objCommandp As MySqlCommand = New MySqlCommand()
objCommandp.Connection = webcon
objCommandp.CommandText = "INSERT INTO stuinfo(idstu,namestu,idnum,sexstu) VALUES(@idstu,@namestu,@idnum,@sexstu)"
objCommandp.Parameters.AddWithValue("@idstu", stutable.Rows(i).Item("id"))
objCommandp.Parameters.AddWithValue("@namestu", stutable.Rows(i).Item("name") + "-" + stutable.Rows(i).Item("family"))
objCommandp.Parameters.AddWithValue("@idnum", CStr("N" + stutable.Rows(i).Item("fname")))
objCommandp.Parameters.AddWithValue("@sexstu", stutable.Rows(i).Item("sex"))
webcon.Open()
objComm3.ExecuteNonQuery()
objComm2.ExecuteNonQuery()
objCommandp.ExecuteNonQuery()
webcon.Close()
Next i
MessageBox.Show("success insert to web ")

mansourii
دوشنبه 17 آبان 1389, 11:55 صبح
با سلام
بعد از مدتی تلاش تونستم به بانک mysql رو هاستم وصل بشم و اطلاعات رو به اون insert کنم ، اما حالا مشکل جدید ی به نام تبدیل فارسی به ؟؟؟ پیش آمده

قبل از همه چیز باید بگم که تمام بحثهای مربوط به این مطلب رو خوندم و یکی یکی امتحان کردم که در زیر لیستی از اونها رو آوردم

1- با dll مربوط به اتصال به بانک my sql به آن وصل شدم
2- charset بانک، جدول و فیلدها رو روی utf گذاشتم(utf_persian , ... )رو هم امتحان کردم
3- قبل از دستور insert دو دستور زیر رو دادم


SET NAMES utf8
SET CHARACTER SET utf8

4- با باینکه به جای فارسی ؟؟؟ می نوشت رفتم و خروجی گرفتم و charset صفحه html رو بهutf گذاشتم

ولی باز هم به جای فارسی ??? نشون میده
دیگه مغزم کار نمیکنه، الان دو روزه مشغول این کارم
این هم نمونه کدهام :


For i = 0 To Val(stutable.Rows.Count) - 1
'------------------------------------
Dim objComm2 As MySqlCommand = New MySqlCommand()
objComm2.Connection = webcon
objComm2.CommandText = "SET NAMES utf8"
'------------------------------------
Dim objComm3 As MySqlCommand = New MySqlCommand()
objComm3.Connection = webcon
objComm3.CommandText = "SET CHARACTER SET utf8"
'---------------------§«¢ي© ي©ي§ §ں§ى ىں----------------
Dim objCommandp As MySqlCommand = New MySqlCommand()
objCommandp.Connection = webcon
objCommandp.CommandText = "INSERT INTO stuinfo(idstu,namestu,idnum,sexstu) VALUES(@idstu,@namestu,@idnum,@sexstu)"
objCommandp.Parameters.AddWithValue("@idstu", stutable.Rows(i).Item("id"))
objCommandp.Parameters.AddWithValue("@namestu", stutable.Rows(i).Item("name") + "-" + stutable.Rows(i).Item("family"))
objCommandp.Parameters.AddWithValue("@idnum", CStr("N" + stutable.Rows(i).Item("fname")))
objCommandp.Parameters.AddWithValue("@sexstu", stutable.Rows(i).Item("sex"))
webcon.Open()
objComm3.ExecuteNonQuery()
objComm2.ExecuteNonQuery()
objCommandp.ExecuteNonQuery()
webcon.Close()
Next i
MessageBox.Show("success insert to web ")





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

معمولا فونت Tahoma اين مشكل رو داره
1- شما بايد يك فونت از نوع B (مثل B_badr) رو دانلود كني
2- فونت رو تو يك پوشه اي كپي كني
3- كدي بنويسي كه بره فونت رو از مسير بخونه و برنامه ات رو با اون فونت بشناسه ( اگه اين كار رو نكني وقتي تو يه دستگاه ديگه اي كه اين فونت رو نداره اجرا كني با مشكل برخورد مي كني)
4-يادت باشه اگه خواستي اينستال بسازي كدت رو درست بنويسي و فونت رو تو اينستالت بريزي.

(( البته راه ديگه اي هم داره مثل كامپونت ولي بدبختيه من كه تو اينجور كارا با كامپونت مخالفم ))

اميدوارم تونسته باشم مشكلت رو حل كنم

mohammad-gh
دوشنبه 17 آبان 1389, 18:32 عصر
یعنی علامت ؟؟؟؟ راه چاره ای نداره و تنها راهش اینه که یه فونت دیگه بهش معرفی کنم

ولی دوستان دیگه که میگفتن خیلی راحتتر به جواب رسیدن
من فکر میکنم با راه های بهتری میشه این مشکل رو حل کرد
با زهم ممنون از اینکه جواب دادید
راستی مشکل از dll یا ورژن اون نباشه که باهش به mysql کانکت میشم

mohammad-gh
سه شنبه 18 آبان 1389, 10:43 صبح
من کارم بد لنگ این مشکل است!

mohammad-gh
شنبه 22 آبان 1389, 17:51 عصر
یکی که تا حالا این کالر رو کرده مراحل کار رو بگه شاید من متوجه اشتباهم شدم
اراسل اطلاعات از برنامه ویندوز (vb.net) و بانک 2000 sql به بانک اطلاعاتی تحت وب mysql

issa_nagheri
یک شنبه 23 آبان 1389, 18:44 عصر
منم دقیقا همین مشکل را با فارسی در mysql دارم.
میخوام از sql2000 یکسری اطلاعات را از طریق دلفی به mysql بر روی هاست ببرم. اما فارسی اون فقط علامت سوال نشون میده.
جالب اینکه وقتی اطلاعات فارسی از sql2000 کپی پست می کنم رو phpmyadmin بازهم علامت سوال نشون میده. پس اینجا ربطی به دلفی و یا هر ide دیگه نداره

abdollah110110
دوشنبه 24 آبان 1389, 02:10 صبح
این دو دستور رو در برنامه به کاربرید:

ALTER DATABASE db_name CHARACTER SET utf8 COLLATE utf8_danish_ci
ALTER TABLE table_name CHARACTER SET utf8 COLLATE utf8_danish_ciجواب میده :قهقهه: :قهقهه: :قهقهه:

mohammad-gh
دوشنبه 24 آبان 1389, 13:43 عصر
دستت درد نکنه ، من گفتم حتما جواب میده ولی باز هم جواب نداد :عصبانی++:
این هم کدهام


Dim objComm2 As MySqlCommand = New MySqlCommand()
objComm2.CommandText = "ALTER DATABASE fardayen_football CHARACTER SET utf8 COLLATE utf8_danish_ci"
objComm2.Connection = webcon
'------------------------------------
Dim objComm3 As MySqlCommand = New MySqlCommand()
objComm3.Connection = webcon
objComm3.CommandText = "ALTER TABLE stuinfo CHARACTER SET utf8 COLLATE utf8_danish_ci"
Dim objCommandp As MySqlCommand = New MySqlCommand()
objCommandp.Connection = webcon
objCommandp.CommandText = "INSERT INTO stuinfo(idstu,namestu,idnum,sexstu) VALUES(@idstu,@namestu,@idnum,@sexstu)"
objCommandp.Parameters.AddWithValue("@idstu", stutable.Rows(i).Item("id"))
objCommandp.Parameters.AddWithValue("@namestu", stutable.Rows(i).Item("name") + "-" + stutable.Rows(i).Item("family"))
objCommandp.Parameters.AddWithValue("@idnum", CStr("N" & stutable.Rows(i).Item("fname")))
objCommandp.Parameters.AddWithValue("@sexstu", "ë§ں©§")
webcon.Open()

objComm3.ExecuteNonQuery()
objComm2.ExecuteNonQuery()
objCommandp.ExecuteNonQuery()


webcon.Close()

یعنی شما تا حالا جواب گرفته اید!!!

abdollah110110
سه شنبه 25 آبان 1389, 01:19 صبح
دستوراتی که من گفتم رو بعد از باز کردن دیتابیست، در برنامه به کار ببر
اگر خطایی نداشته باشی جواب میده
این دستور رو هم دقیقا بعد از باز کردن دیتابیست بنویس

SET CHARACTER SET utf8ایجاد جدول هم بصورت:



CREATE TABLE table_name( column_name1 data_type,
column_name2 data_type,
column_name3 data_type,
....
) CHARACTER SET utf8 COLLATE utf8_general_ci[/quote]من با php نتیجه گرفتم

mohammad-gh
سه شنبه 25 آبان 1389, 12:56 عصر
نه متاسفانه درست نمیشه
همشو امتحان کردم
البته ما داریم از یه برنامه .net به بان mysql روی هاست اطلاعات میفرستیم و این شاید موضوع رو کمی متفاوت کنه
نمی دونم تا حالا کسی این کار رو انجام نداده تا به ما هم بگخ مشکل از کجاست

abdollah110110
سه شنبه 25 آبان 1389, 22:21 عصر
احتمالا مشکل از کدهای برنامه شماست
زبان برنامه نویسیتون هرچی هست
روی کدهاش که مینویسید بیشتر دقت کنید

mohammad-gh
سه شنبه 30 آذر 1389, 12:20 عصر
مشکلم حل شد
اینجا نوشتم تا اگر کسی این مشکل رو داشت مصیبتی که من کشیدم رو نکشه
1- باید تو کانکشن استرینگ نوع charset رو مشخص کنیم


Dim webcon As MySqlConnection = New MySqlConnection("Server=server name;Database=xxxxxxxx;Uid=xxxx;Pwd=2255776;charse t=utf8")


2- بعد هم این دستور رو مینویسیم


Dim cmd As MySqlCommand = New MySqlCommand()
cmd.Connection = webcon
cmd.CommandText = "SET NAMES 'utf8' COLLATE 'utf8"
webcon.Open()
cmd.ExecuteNonQuery()
webcon.Close()

امیدورام هر کی مشکل داشت حل بشه