JSP,servlet和数据库之间传值出现乱码的问题



最近困扰我很久的一个问题终于解决了,为他我头疼了好几天,问题是JSP通过servlet向数据库传值,查询显示在页面的时候出现了乱码,原先我数据库中有两行带有中文的数据,查询的时候倒是没有出现乱码,我debug一下,发现JSP和servlet中所有接受中文字符集的变量都没有出现乱码,我去数据库查看,所有添加的中文字符都是问号,问题发现了,我就百度什么原因,有人说改变tomcat字符集,通过更改server.xml文件的字符集来接受中文字符,

方法一:

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

我试了一下还是没能解决问题,

方法二:

如果通过servlet向数据库发送数据中包含中文,可以再servlet中设置

request.setCharacterEncoding("UTF-8");
  response.setContentType("text/html;charset=UTF-8");

方法三:

在页面时设置charset的字符集

 <%@ page language="java" contentType="text/html; charset=utf-8"  pageEncoding="utf-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 

方法四:

在web.xml文件定义编码,同时在SetCharacterEncodingFilter类里定义编码为utf-8

web.xml:

 <filter>
<filter-name>SetCharacterEncodingFilter</filter-name>
<filter-class>com.bzu.servlet.SetCharacterEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>SetCharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

SetCharacterEncodingFilter类:

public void doFilter(ServletRequest request, ServletResponse response,   FilterChain chain) throws IOException, ServletException {
   request.setCharacterEncoding("UTF-8");//处理编码
   response.setCharacterEncoding("UTF-8");//处理编码
   chain.doFilter(request, response);//让过滤器执行下一个请求
   }
  public void destroy() {

  }
  public void init(FilterConfig arg0) throws ServletException {
    }

方法五:在form表单里定义编码

 accept-charset="utf-8" onsubmit="document.charset='utf-8';"  

这些方法都试过了,还是出现了乱码。无奈,之后在群里请教大神,有一个大神说,在MySQL数据库里运行下面这一句话

  show variables like '%char%';

我运行之后的结果是

大神说其中我这两个需要更改,

然后我就找到安装目录下的my.ini文件吧把下面几句话给成如下格式:

default-character-set=utf8
default-storage-engine=INNODB

之后重启MySQL,之后果真问题解决了。

附带群的qq号, 293074111希望群里能帮助一下真正爱学习Java的同学



时间: 2024-11-08 01:48:23

JSP,servlet和数据库之间传值出现乱码的问题的相关文章

JSP Servlet SQL 三者之间数据传递

前言: 最近一直在做WEB开发,现总结一下这一段时间的体会和感触. 切记,web开发重点在于前台数据交互,页面美化而不要太沉溺于底层数据. 浏览器时代来到,向我们召唤出更炫.更简洁.更方便.更大气的网站. 这篇博客目的在于为大家解决web开发中最基础的数据传递操作,让大家有一个好的起点,在web开放中更加游刃有余 背景: 目前业界很流行的WVC(model-view-control)开发模式,具体暂可理解为 模型是javaBean, 视图是JSP, 控制是servlet. web的运行机制: 数

Jsp+Servlet+JavaBean学习阶段案例-留言板(MessageBoard)

Jsp+Servlet+JavaBean学习阶段的一个案例总结 名称:留言板(MessageBoard) 开发技术:Jsp+Servlet+JavaBean 数据库:Mysql 开发工具:IntelliJ IDEA 2016.1.3 服务器:Tomcat 8.0.36 功能说明 普通用户:增加删除修改留言信息 管理员:增加删除修改留言信息.管理用户.设置用户发帖留言权限 数据库结构 tb_user表 字段 类型 名称 说明 id int id name nvarchar 姓名 password

JSP/ Servlet常见的中文乱码原因

在开发中,我们经常遇到中文乱码的问题,比方: &浏览器中看到的 Jsp/Servlet 页面中的汉字成了 '?' ?  &浏览器中看到的 Servlet 页面中的汉字都成了乱码  &Jsp/Servlet 页面无法显示 GBK 汉字. &Jsp/Servlet 不能接收 form 提交的汉字. &JSP/Servlet 数据库读写无法获得正确的内容. 隐藏在这些问题后面的是各种错误的字符转换和处理.解决类似的字符encoding问题,须要了解 Jsp/Servlet

JSP Servlet之间交换数据

摘自:<轻量级Java EE企业应用实战>第三版 对于每次客户端请求而言,web服务器大致需要完成以下步骤: 1.启动单独线程 2.使用I/O流读取用户的请求参数 3.从请求数据中解析参数 4.处理用户请求 5.生成响应数据 6.使用I/O流向客户端发送请求数据 1.2.6是通用的,由web服务器完成,3.4.5存在差异,因为不同请求里包含的请求参数不一样,处理用户请求的方式也不同,所生成的响应也不同,这3步由Servlet的_jspService()方法完成.当编写JSP页面时,页面的静态内

tomcat服务器乱码问题,tomcat与数据库之间的编码统一转换

在tomcat目录的conf目录下,修改server.xml文件,在下面截图中的位置加上URIEncoding="UTF-8"则表示tomcat编码转换为utf-8风格, 一般在前台获得相应的值后都会处理编码问题,如用String 类的转码,URLEncoder等转码以至于传到数据库不会乱码 tomcat服务器乱码问题,tomcat与数据库之间的编码统一转换

JSP/Servlet编码导致乱码问题

JSP/Servlet编码导致乱码问题 jsp页面的三处编码:       1.<%@ page language="java" pageEncoding="UTF-8"%>         作用:告诉jsp编译器将jsp编译成Servlet时使用的字符编码         例如,你的JSP文件是以GBK为编码保存的 (右击jsp-->Properties --> Text file encoding                设置成与p

两个jsp之间传参数乱码

两个jsp之间传参数乱码 一.问题描述: 一个jsp传中文参数调另一个jsp,浏览器接到的参数显示乱码,以下是我个人解决办法,希望有所帮助~~ 二.问题解决办法: 1.传参数的jsp(一定要两个encodeURI): 路径/文件名.jsp?title=' + encodeURI(encodeURI(title)); 2.接参数的jsp(建议接参数解码时判空,否则这个参数不传时,会报错): //引入<%@ page import="java.net.URLDecoder" %>

JSP/Servlet Web 学习笔记 DayFour

Servlet概述 Servelt是使用Java Servlet应用程序接口及相关类和方法的Java程序. Servlet是用Java编写的Server端程序,它与协议和平台无关.Servlet运行于Java服务器中. Java Servlet API 定义了Servlet和服务器之间的标准接口,这使得Servlet具有跨服务器平台的特性. 通常,Servlet采用一种无状态的“请求-响应”模型来访问.它能处理客户端传来的Http请求,从中提取参数,处理业务逻辑,最终返回数据或输出HTML.它还

java基础--jsp/servlet

后端:servlet  jsp 前后端:ajax 一定要使用自定义协议 TCP/IP: 1    封包 :有可能分为多个包发送hello world 2   粘包:接收方接到后粘包,可能会出错 helloworld  hello world c/s 客户控件GUI-->调用通讯模块-->打包(按照自定义协议将数据封装成一个数据包)-->向业务通讯模块发送请求-->业务通讯模块进行拆包-->通讯模块调用业务-->业务访问DB数据库-->业务模块返回处理结果到通讯--