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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (57)

你能帮忙解决问题吗?

我正在尝试从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 Update(故意)中我可以在错误消息中看到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。

提问于
用户回答回答于

пппп应该是pe pe pe pe?好吧,那个Mojobake。请参阅此页以获取可能有助于它的事项的列表。

问号有不同的原因,也在该链接中讨论过。

使用POST时可能需要这样做:

<form method="post" action="/your/url/" accept-charset="UTF-8">

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

扫码关注云+社区

领取腾讯云代金券