『壹』 java url中有中文 传到后台有乱码 怎么改 乱码是
你这个问题真心不好办,建议你把页面编码改为GBK编码把。像楼上说的这些方法专看属似行得通,原理就是把utf-8转为gbk然后再转回utf-8,但那样是不能解决问题的,试图通过String newStr = new String(str.getBytes("gbk","utf-8"));办不到的,结果是中文字符为奇数会出现最后一个字乱码。我以前也曾碰到这个情况,最后还是把页面统一编码解决。
『贰』 发布到linux服务器出现页面传入后台的汉字乱码
首先我是用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;
『叁』 jspsmartupload上传的文件名是乱码怎么办
方法一:(之前在页面直接跳转上传时能够解决问题,异步提交上传图片就不能正常了)
1.解决中文乱码:
【1】:首先上传页面和接收页面都必须制定编码格式为GBK;
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
【2】:在上传页面要response.setCharacterEncoding("GBK");
【3】:在接收页面要request.setCharacterEncoding("GBK");
【4】:注意上传时表单要指定编码为:enctype="multipart/form-data"
【5】:注意上传时表单要指定方法为:method="post"
方法二:(异步提交表单能正常解决)
【1】上传页面:(对参数做一次encodeURI)js
//对表单中的中文区域值得获取并进行转码
var name = parent.window.$("#tabs_name").val();
var direction = parent.window.$("#tabs_direction").val();
parent.window.$("#tabs_name").val( encodeURI(name));
parent.window.$("#tabs_direction").val( encodeURI(direction));
parent.window.$('#subject_modify').submit(); //提交表单
【2】接收参数页面(对参数做一次URLDecoder)
String name = smart.getRequest().getParameter("name");
name = URLDecoder.decode(name,"utf-8");
『肆』 为什么上传文件的文件名变成乱码
对于正常的文件在上传后,文件名不会有变化。
对于链接文件,在上传后,系统上传的是链接的目的文件,所以文件名有变化。对于链接文件,如果是链接到本地的文件,则实际上传的是链接到的具体文件,文件名也是那个文件名;如果是链接到一个网页,则实际上传的就是那个网页,文件名则是网址了。
对于出现的所谓的乱码,其实就是那个网页的实际网址。所以建议不要上传链接文件。