JFinal中文不能正确提交

我在做JFinal demo的时候,向数据库新增数据,英文没有任何问题,中文却报错,报错信息如下:请大神指教
严重: /user/submit
com.jfinal.plugin.activerecord.ActiveRecordException: java.sql.SQLException: Incorrect string value: '\xE5\x88\x98\xE8\xBF\x9B...' for column 'name' at row 1
    at com.jfinal.plugin.activerecord.Model.save(Model.java:452)
    at com.liu.controller.UserController.submit(UserController.java:41)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.jfinal.aop.Invocation.invoke(Invocation.java:73)
    at interceptor.GlobalInterceptor.intercept(GlobalInterceptor.java:12)
    at com.jfinal.aop.Invocation.invoke(Invocation.java:67)
    at com.jfinal.core.ActionHandler.handle(ActionHandler.java:78)
    at handler.UrlHandler.handle(UrlHandler.java:19)
    at com.jfinal.core.JFinalFilter.doFilter(JFinalFilter.java:73)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:94)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:502)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1132)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1533)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1489)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.sql.SQLException: Incorrect string value: '\xE5\x88\x98\xE8\xBF\x9B...' for column 'name' at row 1
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1084)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4232)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4164)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2615)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2776)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2838)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2082)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2334)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2262)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2246)
    at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:410)
    at com.jfinal.plugin.activerecord.Model.save(Model.java:447)
    ... 29 more

评论区

JFinal

2017-10-28 14:34

存放数据的那个字段不支持你当前的数据格式, encoding 不正确引起的,改改 encoding,例如,存放 emoji表情字符串数据,需要用 utf8mb4 字符集

存放有些偏门的微信的昵称也会出这种情况。这种问题决然与 jfinal 无关,只要把 encoding 搞对就可以了

JFinal

2017-10-28 14:37

如果确定字符集没有问题,再确定一下 jdbcUrl 中的 encoding 是不是正确,例如在本站首页下载的 jfinal demo 配置文件中的 jdbcUrl 值如下:
jdbc:mysql://localhost/jfinal_demo?characterEncoding=utf8

注意看最后一段:?characterEncoding=utf8,这个就指定了字符集

刘进洪

2017-10-28 17:54

@JFinal 已经解决了,是因为数据的问题,谢谢,请问在哪里可以下载generator demo的源码啊?

JFinal

2017-10-28 19:15

@刘进洪 首页的 jfinal demo中就有

刘进洪

2017-10-30 20:15

@JFinal 跪求使用record获取提交的数据的代码,不是使用getPara()的这种方式,而是使用getRecord的方式,我是一个新手,谢谢

JFinal

2017-10-30 20:38

@刘进洪 用 getModel 与 getBean, 不支持 getRecord

JFinal

2017-11-02 10:50

@刘进洪 IDEA 下启动,要去掉最后一个参数

刘进洪

2017-12-05 14:46

@JFinal 你好,我在使用poi导出Excel的时候,后台和前台都没有任何报错信息,但是浏览器不执行下载的操作,不知道问题出在哪

JFinal

2017-12-05 15:58

@刘进洪 jfinal 并未提供操作 poi、excel 的 api,建议找一下相关文档

热门反馈

扫码入社