开发者社区> 问答> 正文

mysql 插入繁体字报错?报错

@jfinal程序插入繁体字mysql的时候报错,数据库设置了utf8,但是依然报错,数据库,表,字段,都设置了utf8。请问大家有什么办法吗



2013-11-30 12:05:18

[ERROR]-[Thread: qtp28899428-18]-[com.jfinal.core.ActionHandler.handle()]: /hotel/2
com.jfinal.plugin.activerecord.ActiveRecordException: java.sql.SQLException: Incorrect string value: '\xF0\xA6\x8D\x8B\xE5\xA4...' for column 'name' at row 1
at com.jfinal.plugin.activerecord.Model.save(Model.java:305)
at com.demo.hotel.HotelController.read(HotelController.java:125)
at com.demo.hotel.HotelController.index(HotelController.java:56)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.jfinal.core.ActionInvocation.invoke(ActionInvocation.java:55)
at com.jfinal.core.ActionHandler.handle(ActionHandler.java:73)
at com.jfinal.core.JFinalFilter.doFilter(JFinalFilter.java:72)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1307)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:453)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:560)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1072)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:382)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1006)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:365)
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:485)
at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:926)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:988)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:635)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:628)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.sql.SQLException: Incorrect string value: '\xF0\xA6\x8D\x8B\xE5\xA4...' for column 'name' at row 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4096)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4028)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2490)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2651)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2683)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2144)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2444)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2362)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2347)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:105)
at com.jfinal.plugin.activerecord.Model.save(Model.java:299)
... 32 more

展开
收起
爱吃鱼的程序员 2020-06-22 14:09:16 863 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    遇到过你这样的问题,Incorrectstringvalue:'\xF0\xA6\x8D\x8B\xE5\xA4...'forcolumn'name'atrow1

    你要先确定你在servlet里面或者action或者其他的应用程序里面获取到的字符串不是乱码。

    检查下你插入数据库之前的数据是否是乱码了。

    如果可以你可以在数据库连接完时执行 SETNAMES'utf8';这个语句。这样只要你的程序向MySQL提交utf8编码的数据时,就不会出这样的错误了。请先保证你程序接收到的数据是UTF8编码的!jdbcurl中指定编码没?详见jfinaldemo项目

    引用来自“巴顿”的答案

    遇到过你这样的问题,Incorrectstringvalue:'\xF0\xA6\x8D\x8B\xE5\xA4...'forcolumn'name'atrow1

    你要先确定你在servlet里面或者action或者其他的应用程序里面获取到的字符串不是乱码。

    检查下你插入数据库之前的数据是否是乱码了。

    你是从文件读取繁体字出来对吧?然后读取出来的是乱码,所以插进数据库才会出错。那么问题就和Jfinal没关系,和数据库也没关系了,你需要解决的就是读取输入流中文乱码的问题了。这个我很少做,你自己可以百度,google下去解决。

    引用来自“JFinal”的答案

    jdbcurl中指定编码没?详见jfinaldemo项目

    引用来自“mekain”的答案

    引用来自“巴顿”的答案

    遇到过你这样的问题,Incorrectstringvalue:'\xF0\xA6\x8D\x8B\xE5\xA4...'forcolumn'name'atrow1

    你要先确定你在servlet里面或者action或者其他的应用程序里面获取到的字符串不是乱码。

    检查下你插入数据库之前的数据是否是乱码了。

    连接数据库后,先执行setnamesutf8(或者你用的其它字符集),再执行其它sql查询。
    cmd命令行窗口的编码为gbk,所以你要么把数据库设置成gbk,要么将cmd窗口改成utf8
    2020-06-22 14:09:34
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像