尝试将西里尔符号插入mysql表

时间:2018-07-23 16:44:39

标签: mysql jsp unicode utf-8 cyrillic

请帮助您解决问题。

我正在尝试从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。

1 个答案:

答案 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">

看看是否可以获得文本的十六进制编码。