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

کمک و پشتیبانی => شبکه و سرویس‌ دهنده‌ها => نویسنده: tooraj.jamal در 06 تیر 1388، 08:47 ق‌ظ

عنوان: مشکل نوشتن و خواندن utf8 در MySql
ارسال شده توسط: tooraj.jamal در 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 روی سیستمم نصبه. این رو چطوری میتونم بفهمم؟
در کل کسی میدونه چجوری میتونم مشکلم رو حل کنم؟
عنوان: پاسخ به: مشکل نوشتن و خواندن utf8 در MySql
ارسال شده توسط: BeckhaM17 در 06 تیر 1388، 04:52 ب‌ظ
مرورگری که استفاده میکنید مطمنید که character encoding اش بر روی utf-8 تنظیم شده ؟
عنوان: پاسخ به: مشکل نوشتن و خواندن utf8 در MySql
ارسال شده توسط: ehsanadmin در 06 تیر 1388، 08:17 ب‌ظ
دوست عزیز آیا با استفاده از php اطلاعات داخل دیتابیس رو میخونید؟
لطفا راجع به نحوه خواندن اطلاعاتتون توضیح بدید.
عنوان: پاسخ به: مشکل نوشتن و خواندن utf8 در MySql
ارسال شده توسط: tooraj.jamal در 06 تیر 1388، 09:48 ب‌ظ
بله، encoding صفحه رو روی UTF-8 توسط تگ متا تنظیم کردم. مطمینم که این مشکلی نداره. این رو هم مطمینم که کدم مشکلی نداره و مشکل از MySql هستش.

من از زبون Java 1.6 و فریمورک Wicket استفاده میکنم. این پروژه رو با Intellij Idea 8.1 نوشتم.
عنوان: پاسخ به: مشکل نوشتن و خواندن utf8 در MySql
ارسال شده توسط: کرگدن در 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
عنوان: پاسخ به: مشکل نوشتن و خواندن utf8 در MySql
ارسال شده توسط: tooraj.jamal در 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؟
عنوان: پاسخ به: مشکل نوشتن و خواندن utf8 در MySql
ارسال شده توسط: کرگدن در 07 تیر 1388، 09:57 ق‌ظ
خب از hibernate  سنتی ( به قول خودم :)  sessionFactory) استفاده می کنید یا پیاده سازی JPA اش؟ ( EntityManagerFactory )

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

اگر از پیاده سازی JPA استفاده می کنی می تونم برات یه مثال کامل بذارم :)
عنوان: پاسخ به: مشکل نوشتن و خواندن utf8 در MySql
ارسال شده توسط: tooraj.jamal در 07 تیر 1388، 06:15 ب‌ظ
بله از SessionFactory استفاده میکنم و Entityها رو بوسیله Annotation تعریف کردم.

مشکل حل شد!

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

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

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