一:使用过滤器解决网get/post请求的乱码
1:过滤器
package com.chinacache.utils; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper; import javax.servlet.http.HttpServletResponse; //解决get和post请求的编码问题 public class CharacterFilter implements Filter { public void destroy() { } public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest)req;//Tomcat HttpServletResponse response = (HttpServletResponse)resp;//Tomcat request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); response.setCharacterEncoding("UTF-8"); MyHttpServletRequest mrequest = new MyHttpServletRequest(request); chain.doFilter(mrequest, response); } public void init(FilterConfig filterConfig) throws ServletException { } } //1、实现与被增强对象共同的接口(或继承被增强对象) //2、定义被增强对象的引用 //3、通过构造方法接收被增强对象 //4、修改需要被增强的方法 //5、不需要增强的方法,调用原对象的对应方法 class MyHttpServletRequest extends HttpServletRequestWrapper{ private HttpServletRequest request; public MyHttpServletRequest(HttpServletRequest request){ super(request); this.request = request; } public String getParameter(String name) { try{ String value = request.getParameter(name); if(value==null) return value; //get方式才需要增强 String method = request.getMethod();//请求方式:get post if("get".equalsIgnoreCase(method)){ value = new String(value.getBytes("ISO-8859-1"),request.getCharacterEncoding()); } return value; }catch(Exception e){ throw new RuntimeException(e); } } }
2:web.xml
<filter> <filter-name>CharacterFilter</filter-name> <filter-class>com.chinacache.utils.CharacterFilter</filter-class> </filter> <filter-mapping> <filter-name>CharacterFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
二:如果使用spring mvc 的注解@ResponseBody 直接返回中文字符串会出现 "??????" 乱码
解决:
方法1:使用ajax请求时设置返回类型,返回json,xml可以正常显示中文
$.ajax({
type:'get',//可选get
url:'${projectPath}/execrevokesucceedrecord.json', //.json .xml
data:{"id":id} ,
dataType:'text',//服务器返回的数据类型 可选XML ,Json jsonp script htmltext等
success:function(msg){
},
error:function(){
}
})
type:'get',//可选get
url:'${projectPath}/execrevokesucceedrecord.json', //.json .xml
data:{"id":id} ,
dataType:'text',//服务器返回的数据类型 可选XML ,Json jsonp script htmltext等
success:function(msg){
},
error:function(){
}
})
方法2:不返回string
参考:http://blog.csdn.net/hurryjiang/article/details/7710110
二:img 标签的 src 中存在乱码(http://localhost:8081/starscream/resources/images/bigUser/type_2__%E6%99%BA%E8%83%BD%E4%B8%8B%E8%BD%BD%E6%9C%8D%E5%8A%A1.jpg)
过滤器设置(我的图片在resources目录下)
if (hr.getRequestURI().contains("resources")) { String uri = hr.getRequestURI(); String ch = URLDecoder.decode(uri, "UTF-8"); if (uri.equals(ch)) { chain.doFilter(request, response); } else { ch = ch.substring(hr.getContextPath().length()); config.getServletContext().getRequestDispatcher(ch).forward(request, response); } }
js页面中的使用:url=encodeURI(url);
参拷(http://bbs.csdn.net/topics/290057574)
package com.test; import java.io.IOException; import java.net.URLDecoder; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; public class UrlFilter implements Filter { public final static String DEFAULT_URI_ENCODE = "UTF-8"; private FilterConfig config = null; private String encode = null; @Override public void init(FilterConfig config) throws ServletException { this.config = config; this.encode = config.getInitParameter("DEFAULT_URI_ENCODE"); if(this.encode == null) { this.encode = DEFAULT_URI_ENCODE; } } @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; String uri = request.getRequestURI(); String ch = URLDecoder.decode(uri, encode); if(uri.equals(ch)) { chain.doFilter(req, res); return; } ch = ch.substring(request.getContextPath().length()); config.getServletContext().getRequestDispatcher(ch).forward(req, res); } @Override public void destroy() { config = null; } }
web.xml
<filter> <filter-name>urlFilter</filter-name> <filter-class>com.test.UrlFilter</filter-class> <init-param> <param-name>DEFAULT_URI_ENCODE</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>urlFilter</filter-name> <url-pattern>/*.jpg</url-pattern> </filter-mapping>
相关推荐
总结,解决IntelliJ IDEA中`.properties`文件中文显示乱码的问题,关键在于确保文件编码与IDE设置相匹配,并且可能需要调整IDE的默认编码设置。通过以上步骤,大多数情况下的乱码问题都能得到解决。如果问题依然存在...
多文件上传例子,彻底解决中文乱码问题了。总结中文乱码问题如下: 1、所有页面都用UTF-8。 2、写过滤器,设置request.setCharacterEncoding("UTF-8")。 3、javascript脚本里用encodeURI(str)。 4、适当的时候,在...
### Android读取中文文件乱码解决方法 #### 一、问题背景 在开发Android应用时,经常需要处理中文字符或包含中文的文件。如果处理不当,可能会遇到中文乱码的问题,尤其是在读取本地文件或者从网络下载文件时更为...
excel打开csv文件中文乱码问题,将乱码文件拖到此工具就可完成转码,正常显示中文。
Java 生成 PDF 文件,解决中文乱码问题是 Java 编程中常见的问题。解决这个问题的关键是正确地设置中文字体,以避免乱码问题。本文将通过一个完整的示例代码,详细讲解如何使用 iText 库生成 PDF 文件,解决中文乱码...
5. **网络传输问题**:在网络传输过程中,如果文件的编码信息丢失,或者传输过程中数据损坏,也可能引发乱码。 二、乱码的解决方法 1. **确定编码格式**:首先,你需要确定原始文件的正确编码格式。可以使用诸如...
在 Linux 系统中,中文文件在 ssh 终端中显示为乱码,这是由于 SSH 客户端和 Linux 服务器之间的字符集不同所导致的。解决这个问题,需要修改 Linux 系统的默认字符集,使其与 Windows 系统的一致。 本文档提供了两...
解决Jmeter5.3上传文件中文乱码问题和录制脚本中文乱码问题,替换原本的lib\ext目录下的ApacheJMeter_http.jar文件,上传文件时,需要勾选“对POST使用multipart / form-data” 和 “与浏览器兼容的头”选项,并在...
在提供的压缩包文件"Adb"中,很可能包含了经过修改的adb.exe程序,用户只需替换原有的adb.exe,即可解决中文乱码问题,无需进行复杂的源码编译。这是一个方便快捷的解决方案,对于那些频繁处理中文文件的开发者来说...
java读取txt文件乱码解决方案java读取txt文件乱码解决方案java读取txt文件乱码解决方案java读取txt文件乱码解决方案java读取txt文件乱码解决方案java读取txt文件乱码解决方案java读取txt文件乱码解决方案java读取txt...
### Java实现文件下载并解决中文文件名乱码 在日常的Web开发中,经常会遇到需要让...通过以上步骤和注意事项,我们可以有效地实现Java中文件的下载功能,并且解决了中文文件名可能带来的乱码问题,提高了用户体验。
解决Jmeter5.5、Jmeter5.5、Jmeter5.5上传文件中文乱码问题和录制脚本中文乱码问题,其他版本请勿使用! 使用时替换原本的lib\ext目录下的ApacheJMeter_http.jar文件并重启,上传文件时,需要勾选“对POST使用...
以下是一些解决Linux环境中中文乱码问题的方法和详细步骤: 1. **设置locale** Linux系统中的locale设置对字符编码有很大影响。你可以通过`locale`命令查看当前系统的locale设置。如果系统不支持中文,你需要创建...
sftp解决上传中文乱码,sftp.setFilenameEncoding("GBK");修改是不起作用的,修改源码后重新导出的jar包。
本文将深入探讨如何在Java中解决Properties文件保存和读取中文乱码的挑战。 首先,我们需要理解Java默认使用ISO-8859-1编码来处理Properties文件。由于此编码不支持大部分中文字符,因此在保存或加载包含中文的...
然而,当这些.class文件中包含中文字符时,如果没有正确处理编码,可能会出现中文乱码的问题。本文将详细介绍如何解决JAVA反编译文件时的中文乱码问题。 首先,理解问题的根源:Java源代码默认采用UTF-8编码,但...
Java 读取 TXT 文本文件乱码解决方案中,主要讨论的是在 Java 中读取 TXT 文本文件时出现乱码的问题,并提供了解决方案。 首先,文章中提供了一个简单的读取 TXT 文件的代码,使用 BufferedReader 和 FileReader ...
总的来说,处理Java中CSV文件的中文乱码问题主要涉及正确设置字符编码,而给定的.NET DLL文件与此问题的解决没有直接关联。如果你在.NET环境中遇到类似问题,可以参考.NET的编码处理方式,或者寻找适合的.NET库来...
总结来说,处理Java中ZIP文件的中文乱码问题,关键在于明确指定字符集,通常是UTF-8,无论是使用Java内置的API还是第三方库。同时,理解文件系统的编码和压缩/解压过程中的字符编码转换也非常重要。通过这种方式,...