发布到Linux服务器出现页面传入后台的汉字乱码

2024-11-16 00:01:24
推荐回答(3个)
回答1:

首先我是用idea开发的,我的需求是在将java项目部署到服务器上,去调取数据,在用?id=北京 这种传参时,linux服务器出现乱码,最后试了多种方法,仅供参考
页面pageEncoding = "utf-8" charset="utf-8"

(1)server.xml 配置端口号出配置 URIEncoding = "UTF-8" 这是针对浏览器的编码
还有个参数 useBodyEncodingForURI = "true"; 暂时没搞清是什么
(2)web.xml 中的字符集过滤器 是针对springMVC的字符集
(3) url 中 ?拼接的参数 不会经过字符集拦截器 重定向中可以使用ModelAndView 的对象,
ModelAndView mv = new ModelAndView("redirect:/index.do");
mv.addObject("id",id);
(4)自定义拦截器
①写一个实现了 HandlerInterceptorAdpter 的拦截器 并且手动实现 preHandle() return true;
② springMVC配置文件中配置



③指定字符集
String id = request.getParameter("id");
if(id != null){
id = new String(id.getBytes("iso-8859-1"),"utf-8");
request.setAttribute("id",id);
}
return true;

回答2:

首先查看一下连接数据库的URL的格式,如果你的URL格式是

jdbc:mysql://localhost:3306/数据库名------就需要改成下面这样
jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=utf8
上面两种写法在windows中都没问题,在Linux下就必须设定连接的字符编码
如果还有问题的话
在终端中登录mysql-------命令是mysql -u root -p;
输入show variables like '%char%'; 看看返回的结果是否全部都是utf8;
再查看建立的表的属性是否为utf8;

回答3:

0002_windows程序出现乱码的解决方案之一