انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


توزیع گنو/لینوکس اوبونتو ۲۰ ساله شد 🎉

نویسنده موضوع: مشکل نوشتن و خواندن utf8 در MySql  (دفعات بازدید: 6172 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین tooraj.jamal

  • Newbie
  • *
  • ارسال: 7
مشکل نوشتن و خواندن utf8 در MySql
« : 06 تیر 1388، 08:47 ق‌ظ »
سلام،

من سعی بر نوشتن و خواندن به صورت UTF-8 در MySql دارم. ولی هر کاراکتر '?' نوشته و طبیعتا خونده میشه.
این خطوط رو زیر [mysqld]، به my.cnf اضافه کردم ولی فایده ای نداشت.
[left]# utf8
init-connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_general_ci[/left]

اول فکر کردم MySql را restart نکردم ولی یک بار سیستم را restart هم که کردم هم همونطوریه. حس میکنم چندتا MySql روی سیستمم نصبه. این رو چطوری میتونم بفهمم؟
در کل کسی میدونه چجوری میتونم مشکلم رو حل کنم؟

آفلاین BeckhaM17

  • Jr. Member
  • *
  • ارسال: 71
پاسخ به: مشکل نوشتن و خواندن utf8 در MySql
« پاسخ #1 : 06 تیر 1388، 04:52 ب‌ظ »
مرورگری که استفاده میکنید مطمنید که character encoding اش بر روی utf-8 تنظیم شده ؟

آفلاین ehsanadmin

  • Newbie
  • *
  • ارسال: 5
پاسخ به: مشکل نوشتن و خواندن utf8 در MySql
« پاسخ #2 : 06 تیر 1388، 08:17 ب‌ظ »
دوست عزیز آیا با استفاده از php اطلاعات داخل دیتابیس رو میخونید؟
لطفا راجع به نحوه خواندن اطلاعاتتون توضیح بدید.

آفلاین tooraj.jamal

  • Newbie
  • *
  • ارسال: 7
پاسخ به: مشکل نوشتن و خواندن utf8 در MySql
« پاسخ #3 : 06 تیر 1388، 09:48 ب‌ظ »
بله، encoding صفحه رو روی UTF-8 توسط تگ متا تنظیم کردم. مطمینم که این مشکلی نداره. این رو هم مطمینم که کدم مشکلی نداره و مشکل از MySql هستش.

من از زبون Java 1.6 و فریمورک Wicket استفاده میکنم. این پروژه رو با Intellij Idea 8.1 نوشتم.

آفلاین کرگدن

  • High Hero Member
  • *
  • ارسال: 1769
  • جنسیت : پسر
پاسخ به: مشکل نوشتن و خواندن utf8 در MySql
« پاسخ #4 : 06 تیر 1388، 10:03 ب‌ظ »
بله، encoding صفحه رو روی UTF-8 توسط تگ متا تنظیم کردم. مطمینم که این مشکلی نداره. این رو هم مطمینم که کدم مشکلی نداره و مشکل از MySql هستش.

من از زبون Java 1.6 و فریمورک Wicket استفاده میکنم. این پروژه رو با Intellij Idea 8.1 نوشتم.

درود
حدس زدم از جاوا استفاده می کنید :)
خب اگر از jdbc استفاده می کنید  (یاORM  هایی مثل hibernate و JPA  
url کانکشنتون رو بگذارید

باید به این صورت باشه
jdbc:mysql://localhost:3306/SchemaName?characterEncoding=UTF-8
« آخرین ویرایش: 06 تیر 1388، 10:07 ب‌ظ توسط کرگدن »

 Vaio-VPCCW - core i7 -Nvidia GT320M -4GB -OS Fedora 20/ kde 4.12
Vbox: Centos 6.4 (server) / Archlinux

آفلاین tooraj.jamal

  • Newbie
  • *
  • ارسال: 7
پاسخ به: مشکل نوشتن و خواندن utf8 در MySql
« پاسخ #5 : 07 تیر 1388، 07:42 ق‌ظ »
بله از Hibernate استفاده میکنم.

jdbc:mysql://localhost:3306/javaclass?autoReconnectForPools=true&useUnicode=true&characterEncoding=UTF-8

در حال حاضر این URL رو set کردم. که اکسپشن میده.
org.hibernate.exception.GenericJDBCException: could not insert: [ir.eris.entity.Student]
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:40)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2158)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2638)
at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:48)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:250)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:298)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:107)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:94)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:507)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:499)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:495)
at ir.eris.service.HibernateUtil.saveOrUpdate(HibernateUtil.java:99)
at ir.eris.page.crud.StudentView$1.onClick(StudentView.java:31)
at org.apache.wicket.ajax.markup.html.AjaxLink$1.onEvent(AjaxLink.java:65)
at org.apache.wicket.ajax.AjaxEventBehavior.respond(AjaxEventBehavior.java:163)
at org.apache.wicket.ajax.AbstractDefaultAjaxBehavior.onRequest(AbstractDefaultAjaxBehavior.java:297)
at org.apache.wicket.request.target.component.listener.BehaviorRequestTarget.processEvents(BehaviorRequestTarget.java:100)
at org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
at org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1175)
at org.apache.wicket.RequestCycle.step(RequestCycle.java:1252)
at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1353)
at org.apache.wicket.RequestCycle.request(RequestCycle.java:493)
at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:355)
at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:200)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
at org.mortbay.jetty.Server.handle(Server.java:324)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:828)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450)
Caused by: java.sql.SQLException: Incorrect string value: '\xD8\xB3\xDB\x8C\xD8\xAF...' for column 'fname' at row 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2870)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)
at com.mysql.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedStatement.java:1169)
at com.mysql.jdbc.ServerPreparedStatement.executeInternal(ServerPreparedStatement.java:693)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1404)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1318)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1303)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:105)
at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:73)
at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:33)
... 42 more

این به MySql مربوط میشه یا Hibernate cfg؟

آفلاین کرگدن

  • High Hero Member
  • *
  • ارسال: 1769
  • جنسیت : پسر
پاسخ به: مشکل نوشتن و خواندن utf8 در MySql
« پاسخ #6 : 07 تیر 1388، 09:57 ق‌ظ »
خب از hibernate  سنتی ( به قول خودم :)  sessionFactory) استفاده می کنید یا پیاده سازی JPA اش؟ ( EntityManagerFactory )

می تونی کوئری create جدولت رو هم بذاری؟ ( اگر mysql query browser داشته باشی با رایت کلیک می تونی بگیریش :) )
اونجا باید فیلد هات هم utf8 باشه
اینجا هم همینطور
fname از چه نوعی هست؟ ( type اش)

اگر از پیاده سازی JPA استفاده می کنی می تونم برات یه مثال کامل بذارم :)

 Vaio-VPCCW - core i7 -Nvidia GT320M -4GB -OS Fedora 20/ kde 4.12
Vbox: Centos 6.4 (server) / Archlinux

آفلاین tooraj.jamal

  • Newbie
  • *
  • ارسال: 7
پاسخ به: مشکل نوشتن و خواندن utf8 در MySql
« پاسخ #7 : 07 تیر 1388، 06:15 ب‌ظ »
بله از SessionFactory استفاده میکنم و Entityها رو بوسیله Annotation تعریف کردم.

مشکل حل شد!

یک عدد سوتی در کرده بودم. در واقع فکر نمیکردم که اگر Encoding دیتابیس و Connection URL رو عوض کردم، یک بار دیگه باید Hibernate از اول Tableها رو بسازه. با همون جدول قبلیها کار میکردم.

بابت اینکه وقتتون رو بی جهت گرفتم، عذر میخوام.

بسوره پدر بی تجربگی