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

在开发中,我们经常遇到中文乱码的问题,比方:

&浏览器中看到的 Jsp/Servlet
页面中的汉字成了 ’?’ ?   

&浏览器中看到的 Servlet
页面中的汉字都成了乱码    

&Jsp/Servlet 页面无法显示
GBK 汉字。

&Jsp/Servlet 不能接收
form 提交的汉字。

&JSP/Servlet
数据库读写无法获得正确的内容。

隐藏在这些问题后面的是各种错误的字符转换和处理。解决类似的字符encoding问题,须要了解
Jsp/Servlet 的执行过程,检查可能出现故障的各个点。以下是一些自己运用中的一些分享:

1.在jsp中假设指定了<%@ page
contentType="text/html;
charset=A"%>,那么在该jsp中全部构造的String(不是引用),假设沒有指定编码,那么这些String的编码是A的;从request得到的String假设沒有指定request的编码的话,他是iso-8859-1的;从别的地方得到的String是使用原來初始的编码的,比方从数据库得到String,假设数据库的编码是B,那么该String的编码是B而不是A的,也不是系统默认的。此时,假设要输出的String的编码不是A,那么,非常可能显示乱码的,所以首先要将String正確转化为编码A的String,然后输出。

2.
假设在jsp中沒有指定<%@ page contentType="text/html;
charset=A"%>,那么相当于指定了<%@pagecontentType="text/html; charset=ISO-8859-1"
%>。

3.
Servlet中假设运行了语句:response.setContentType("text/html;charset=A");説明将response的字符输出流编码设置为A,全部要输出的String的编码要转化为A,否則会得到乱码。Servlet中从request得到的String的编码和jsp中一样的,可是在servlet
java文件里构造的String是使用的系统默认的编码的。在servelt中从外部得到的String是使用原来的编码的,比方从编码为B的数据库得到的数据是编码为B的,不是A,也不是系统默认的编码。

综上所属,要解决我们常见的中文乱码问题,须要理解数据交互中Jsp,
Servlet, 数据库中数据的编码定义,统一编码格式或做适当转换。

JSP/ Servlet常见的中文乱码原因,布布扣,bubuko.com

时间: 2024-12-28 11:03:55

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

JSP开发过程遇到的中文乱码问题及解决方案

JSP开发过程遇到的中文乱码问题及解决方案 来源:偶my耶的博客 发布时间:2015-03-31 阅读次数:543 8 对于程序猿来说,乱码问题真的很头疼,下面列举几种常见的乱码. 1.数据库编码不一致导致乱码 解决方法: 首先查看数据库编码,输入: show variables like "%char%"; 确认编码一致,如果不一致,可输入: SET character_set_client='utf8'; SET character_set_connection='utf8'; S

Java中文乱码原因

Java在中文环境中乱码无处不在,而且出现的时间和位置也包涵广泛,具体的解决方法也是千奇百怪. 但是如果能理清其中的脉络,理解字符处 理的过程,对于解决问题很有指导意义,不至于解决了问题也不知道为什么. 其实,原因不外乎出在String输入时和输出时. 首先,Java中的任何String都是以UNICODE格式存在的. 很多人因为在GBK环境中使用String,会误以为String是GBK格式,实际上Java的String类中并没有存储CharSet信息的字段, 所有String中的字符只会以U

Servlet中文乱码原因 解决 Get 和 Post 和客户端

一.Get方式的中文乱码 1) 使用如下页面表单内容: <form action="http://127.0.0.1:8080/day07/params" method="get"> 用户名:<input name="username" type="text" /><br/> 密 码:<input name="password" type="passwor

servlet中的中文乱码问题

老师总会说道:学完这个知识点,我们来谈谈中文乱码问题. 乱码的问题总是无处不在,处理不好会给用户带极差的用户体验. 那么我们来记录一下servlet中的乱码问题吧! 1.服务器向客户端响应时出现的乱码问题: response.setCharacterEncoding("UTF-8");  或者response.setContentType("text/html;charset=UTF-8"); 2.客户端向服务器提交数据时出现的乱码问题:1) Post方式提交数据设

JavaWeb/ forward跳转到jsp页面后出现中文乱码问题

问题代码: dispatcher = getServletContext().getRequestDispatcher("/Login.jsp"); dispatcher.forward(request,response); 出现问题:跳转过去后中文乱码. 解决问题:使用 response.setContentType("text/html;charset=UTF-8");即可解决 问题原因: 使用了PrintWriter out = response.getWri

JSP页面调用js中文乱码

jsp中第一句:<%@ page language="java" import="java.sql.*,java.util.*,"  contentType="text/HTML;charset=gb2312" pageEncoding="gb2312"%> html中加上<meta http-equiv="Content-Type" content="text/html;cha

jsp中request.getParameter()中文乱码问题解决

关于使用request.getParameter()得到中文乱码的问题,在网上查找了一天终于找到了一个解决方案,是一个比较笨的方法,要在每个使用request.getParameter()的地方添加如下代码,代码如下: 1 String name=request.getParameter("name"); 2 if(name!=null){ 3 name=new String(name.getBytes("ISO8859_1"),"utf-8")

Servlet、MySQL中文乱码

1.Servlet中文乱码: 在doPost或doGet方法里,加上以下两行即可: response.setContentType("text/html;charset=UTF-8"); request.setCharacterEncoding("UTF-8"); 2.MySQL中文乱码: Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/test? useUn

[Visual studio code 常见问题解决] ——中文乱码、

中文乱码问题解决 描述:刚开始安装VScode要打开含中文的文件,都会出现乱码,这时只要点击右下方的"UTF-8"改成"GB2312"即可.但每次都改是很麻烦的,所以要使得VScode默认支持GB2312 参考:https://www.zhihu.com/question/30033418 解决: 1. File(文件)->Preferences(首选项)->Usersettings(设置) 2. settings.json文件中找到"文件&q