发布到Linux服务器出现页面传入后台的汉字乱码
用Myeclipse10开发的,在jsp页面已经设置编码方式,设置方式如下:<%@pagelanguage="java"import="java.util.*"pageE...
用Myeclipse10开发的,在jsp页面已经设置编码方式,设置方式如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
然后通过传参数提交到后台,传参的方式如下:(传递的参数包含中文)
$.post("init.action","¶m1=123¶m2=abc",function(result){});
然后在本地服务器路的时候写入到数据库是正常的,没有出现乱码,本地是window平台
但是发布到Linux服务器就出现乱码,求大神指教到底是怎么回事 展开
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
然后通过传参数提交到后台,传参的方式如下:(传递的参数包含中文)
$.post("init.action","¶m1=123¶m2=abc",function(result){});
然后在本地服务器路的时候写入到数据库是正常的,没有出现乱码,本地是window平台
但是发布到Linux服务器就出现乱码,求大神指教到底是怎么回事 展开
3个回答
展开全部
首先我是用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配置文件中配置
<mvc:interceptors>
<bean id="idInterceptor" class="app.plant.interceptor.IdInterceptor"></bean>
</mvc:interceptors>
③指定字符集
String id = request.getParameter("id");
if(id != null){
id = new String(id.getBytes("iso-8859-1"),"utf-8");
request.setAttribute("id",id);
}
return true;
页面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配置文件中配置
<mvc:interceptors>
<bean id="idInterceptor" class="app.plant.interceptor.IdInterceptor"></bean>
</mvc:interceptors>
③指定字符集
String id = request.getParameter("id");
if(id != null){
id = new String(id.getBytes("iso-8859-1"),"utf-8");
request.setAttribute("id",id);
}
return true;
展开全部
首先查看一下连接数据库的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;
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;
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
0002_windows程序出现乱码的解决方案之一
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询