jdbc+tomcat+mysql插入utf-8中文乱码解决方案

插入乱码表现如下:

 解决方案:

1, 检查所有的网页编码是否都为:

<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>

正常!

2, show variables like '%char%';查看mysql编码

+--------------------------+----------------------------------------------------
------------------+
| Variable_name            | Value
                  |
+--------------------------+----------------------------------------------------
------------------+
| character_set_client     | utf8
                  |
| character_set_connection | utf8
                  |
| character_set_database   | utf8
                  |
| character_set_filesystem | binary
                  |
| character_set_results    | utf8
                  |
| character_set_server     | utf8
                  |
| character_set_system     | utf8
                  |
| character_sets_dir       | D:\DevelopPlatform\MySQL Server 5.7\MySQL Server 5.
7\share\charsets\ |
+--------------------------+----------------------------------------------------
------------------+
8 rows in set (0.00 sec)

结果正常!

3, 插入数据时进行String转码,

发现结果还是乱码, 说明不是这个问题

4, 检查tomcat配置:

<Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443"  />

问题出现了, 将配置改为:

<Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" 
               URIEncoding="UTF-8"/>

这样是解决请求方式为get的乱码问题,但是如果是使用post请求方式乱码如何解决呢?

如果是post请求方式乱码, 那么就可以添加一个Filter

在filter中过滤字符,添加如下语句:

request.setCharacterEncoding("UTF-8");

最后结果表现正常!


问题得解!


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于 Tomcat 中的码问题,有几种可能的解决方法: 1. 设置 URIEncoding:在 Tomcat 的 server.xml 文件中,找到 <Connector> 元素,添加属性 URIEncoding="UTF-8",如下所示: ```xml <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" /> ``` 这样可以将 URI 请求的编码设置为 UTF-8,以防止码。 2. 设置默认字符集:在 web.xml 文件中,添加以下内容: ```xml <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ``` 这样可以将请求和响应的字符集设置为 UTF-8。 3. 手动设置字符集:在处理请求或响应时,可以通过设置字符编码来解决码问题。例如,在 Servlet 中可以使用以下代码: ```java request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); ``` 4. 检查数据库连接字符集:如果使用了数据库,还需要确保数据库连接的字符集与应用程序一致。可以在数据库连接字符串中指定字符集,例如: ```java jdbc:mysql://localhost:3306/db_name?useUnicode=true&characterEncoding=UTF-8 ``` 这样可以将数据库连接的字符集设置为 UTF-8。 以上是一些常见的解决码问题的方法,根据具体情况选择适合的方法来解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值