请帮助您解决问题。
我正在尝试从jsp插入西里尔符号到mysql表。似乎,我已经尝试了一切。当我在输入表单的“ POST”上更改了方法“ GET”时,它实际上发生了。
我已经在NetBeans中建立了数据库连接池,这是我的URL:
jdbc:mysql://localhost:3306/DBSite?useUnicode=true;characterEncoding=UTF-8;zeroDateTimeBehavior=convertToNull [DBSite_user on Default schema]
我添加了过滤器:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
chain.doFilter(request, response);
}
它在??????上更改了这个符号пппп所以,它有点用。
我添加了
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
如果我要通过MySQL Workbench将西里尔文字添加到MySQL,则一切正常。
当我在SQL更新中确实犯了错误(故意)时,我可以在错误消息中看到HTML试图发送西里尔字母'вара',但实际上mysql插入了'????'
javax.servlet.ServletException:
insert into Comments(commentп, date_creation, id_title)
values ('вара',STR_TO_DATE('23-07-2018 17:52:07', '%d-%m-%Y %H:%i:%s'), 31);
: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?, date_creation, id_title)
values ('????',STR_TO_DATE('23-07-2018 17:52:07' at line 1
root cause
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?, date_creation, id_title)
values ('????',STR_TO_DATE('23-07-2018 17:52:07' at line 1
如果您能在什么时候帮助我找到更改的地方,我将不胜感激。以及至少如何调试它(例如服务器日志)?顺便说一下,我正在使用NetBeans和GlassFish。
答案 0 :(得分:0)
пппп
应该是pe pe pe pe
吗?好吧,就是mojibake。请参阅Trouble with UTF-8 characters; what I see is not what I stored,以获取可能有助于导致它的原因的列表。
问号有不同的原因,也在那里进行了讨论。
使用POST时可能需要这样做:
<form method="post" action="/your/url/" accept-charset="UTF-8">
看看是否可以获得文本的十六进制编码。