WEB开发保存数据中文乱码问题

在使用SSH框架进行Web开发时,作者遇到了数据库保存中文数据出现乱码的困扰。通过设置servlet编码、jsp页面编码为UTF-8,以及调整MySQL数据库配置,问题仍未解决。最终,通过修改连接URL解决了乱码问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这几天简单的学习了一下SSH,今天尝试用SSH做一个简单的用户管理Demo,在测试添加用户,也就是往数据库里添加数据的时候,出现了乱码,我很诧异,并不是因为乱码,而是因为使用Hibernate还出现乱码,于是我百度了一下,发现我是out了,SSH出现乱码也是很正常的。。。好吧我把我遇到能解决乱码的问题总结一下

如果使用的是servlet开发web,直接在servlet里编写

	request.setCharacterEncoding(characterEncoding);
使用字符过滤配置

public class FilterEconding implements Filter {
	private String characterEncoding;
	private boolean enabled;
	public void destroy() {
		// TODO Auto-generated method stub
		characterEncoding=null;
	}

	public void doFilter(ServletRequest arg0, ServletResponse arg1,
			FilterChain arg2) throws IOException, ServletException {
		// TODO Auto-generated method stub
		if(enabled||characterEncoding!=null){
			arg0.setCharacterEncoding(characterEncoding);
			arg1.setCharacterEncoding(characterEncoding);
		}

		arg2.doFilter(arg0, arg1);
	}

	public void init(FilterConfig arg0) throws ServletException {
		// TODO Auto-generated method stub

		characterEncoding = arg0.getInitParameter("characterEncoding");
		enabled="true".equalsIgnoreCase(characterEncoding.trim())||"1".equalsIgnoreCase(characterEncoding.trim());


	}

}
相对应的web.xml

<filter>
		<filter-name>filterEconding</filter-name>
		<filter-class>com.util.FilterEconding</filter-class>
		<init-param>
			<param-name>characterEncoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
		<init-param>
			<param-name>enable</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>filterEconding</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
以上的是代码处理的,

既然要避免乱码,那么凡是牵扯到编码都要统一

所以,jsp页面要设置UTF-8(以UTF-8为例)

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
然后就是数据库编码,这一点也很重要

下面是mysql的配置

以上我都做完之后,保存数据依然出现乱码,然后我又上网找,到处找发现了链接URL

property name="url" value="jdbc:mysql://localhost:3306/studentDB?useUnicode=true&characterEncoding=utf-8">
链接数据库编码,这一点当时没有想到,还有就是在不同的项目中,URL写法还不一致,就是里面的 “&”要写成“&amp;”

到此,我遇到的就是这些,如果以后遇到新的,我会更新的





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值