`

springmvc ajax 乱码

 
阅读更多
输入信息乱码
@RequestParam传值中文乱码
http://luanxiyuan.iteye.com/blog/1849169
使用代码手动转换
try {
			return new String(str.getBytes(fromCharset), toCharset);
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}








返回信息乱码
方法一:
http://blog.csdn.net/kissliux/article/details/14053761
采用了一个比较简单的方法来解决这个问题,就是需要服务器返回中文的时候不使用这个注解,而是直接用HttpServletResponse的对象来完成传输,在服务器端可以通过response.setContentType("text/plain;charset=UTF-8");来设定编码类型,这样就不会出现中文乱码了。
服务器端核心代码如下:
@RequestMapping(value = "test", method = RequestMethod.POST)  
    public void test(HttpServletRequest request,  
            HttpServletResponse response) {  
        String result = null;  
        //取得客户端传来的值  
        String userName = request.getParameter("userName");  
        //向客户端返回一句话  
        result = "您好!";  
  
        PrintWriter out = null;  
        response.setContentType("text/plain;charset=UTF-8");  
        try {  
            out = response.getWriter();  
            out.write(result.toString());  
        } catch (IOException e) {  
            e.printStackTrace();  
        } finally {  
            out.close();  
        }  
    }  

返回值时根据自己的数据类型进行设置,常用的有:
response.setContentType("text/html; charset=utf-8");           html
response.setContentType("text/plain; charset=utf-8");          文本
response.setContentType("application/json; charset=utf-8");    数据
response.setContentType("application/xml; charset=utf-8");      xml


方法二:@ResponseBody乱码
http://blog.csdn.net/kissliux/article/details/14053761
spring-servlet 配置
<mvc:annotation-driven>   
    <mvc:message-converters register-defaults="true">   
        <bean class="com.abc.spring.UTF8StringHttpMessageConverter"/>   
    </mvc:message-converters>   
</mvc:annotation-driven> 


controller中
@RequestMapping(value = "/getWeather",method = {RequestMethod.POST,RequestMethod.GET},produces="text/plain;charset=UTF-8")  
   @ResponseBody  



转换类:
public class UTF8StringHttpMessageConverter extends   
        AbstractHttpMessageConverter<String> {   
   
    public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");   
    private final List<Charset> availableCharsets;   
   
    public UTF8StringHttpMessageConverter() {   
        this(DEFAULT_CHARSET);   
    }   
   
    public UTF8StringHttpMessageConverter(Charset defaultCharset) {   
        super(new MediaType("text", "plain", defaultCharset), MediaType.ALL);   
        this.availableCharsets = new ArrayList<Charset>(Charset   
                .availableCharsets().values());   
    }   
   
    @Override   
    protected boolean supports(Class<?> clazz) {   
        return String.class.equals(clazz);   
    }   
   
    @Override   
    protected String readInternal(Class<? extends String> clazz,   
            HttpInputMessage inputMessage) throws IOException,   
            HttpMessageNotReadableException {   
        MediaType contentType = inputMessage.getHeaders().getContentType();   
        Charset charset = contentType.getCharSet() != null ? contentType   
                .getCharSet() : DEFAULT_CHARSET;   
        return FileCopyUtils.copyToString(new InputStreamReader(inputMessage   
                .getBody(), charset));   
    }   
   
    @Override   
    protected void writeInternal(String t, HttpOutputMessage outputMessage)   
            throws IOException, HttpMessageNotWritableException {   
        MediaType contentType = outputMessage.getHeaders().getContentType();   
        Charset charset = contentType.getCharSet() != null ? contentType   
                .getCharSet() : DEFAULT_CHARSET;   
        FileCopyUtils.copy(t, new OutputStreamWriter(outputMessage.getBody(),   
                charset));   
    }   
   
    protected List<Charset> getAcceptedCharsets() {   
        return this.availableCharsets;   
    }   
       
    @Override   
    protected Long getContentLength(String s, MediaType contentType) {   
        if (contentType != null && contentType.getCharSet() != null) {   
            Charset charset = contentType.getCharSet();   
            try {   
                return (long) s.getBytes(charset.name()).length;   
            } catch (UnsupportedEncodingException ex) {                   
                throw new InternalError(ex.getMessage());   
            }   
        } else {   
            return null;   
        }   
    }   
}   
分享到:
评论

相关推荐

    springmvc 发送ajax出现中文乱码的解决方法汇总

    在开发Web应用时,Spring MVC和Ajax的交互过程中,经常遇到中文乱码的问题。这个问题主要出现在数据从服务器传输到客户端的过程中,由于编码设置不正确,导致中文字符无法正常显示。以下将详细介绍四种解决Spring ...

    springMVC解决ajax请求乱码的三种方法

    主要介绍了springMVC解决ajax请求乱码的三种方法的相关资料,在springmvc的项目中,使用返回页面的请求方式,数据都能正常显示,但是对于ajax的请求,始终显示乱码,这里提供解决办法,需要的朋友可以参考下

    SpringMVC+Jquery实现Ajax功能

    【SpringMVC与jQuery实现Ajax功能详解】 Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,实现了网页的部分刷新,...

    springMVC资料

    "AJAX中文乱码.txt"可能涉及的是在使用SpringMVC进行AJAX通信时遇到的字符编码问题。在JavaScript中发送AJAX请求到服务器,如果处理不当,可能会出现中文乱码。解决这个问题通常需要在服务器端和客户端都设置正确的...

    springmvc-ajax

    这是一个 springmvc + mybatis + jdbc 的基础项目 这里使用了 jackson-databind 包, spring-mvc转json的包 &lt;groupId&gt;com.fasterxml.jackson.core&lt;/groupId&gt; &lt;artifactId&gt;jackson-databind &lt;version&gt;2.12.1 也...

    基于AJAX结合SpringMVC的信息访问服务模式研究

    【基于AJAX结合SpringMVC的信息访问服务模式研究】 AJAX(Asynchronous JavaScript and XML)是一种在不重新加载整个网页的情况下,能够更新部分网页的技术。它利用JavaScript、XHTML、CSS、DOM、XML、XSLT以及...

    解决SpringMvc后台接收json数据中文乱码问题的几种方法

    当前端通过Ajax使用JSON格式向SpringMvc后台发送数据时,可能出现中文乱码。这通常是因为服务器默认的字符编码不支持UTF-8导致的。以下是两种解决方法: - 方式一:在Controller方法中手动转码 在接收到请求参数...

    SpringMVC.pdf

    在整个开发流程中,还需要特别注意请求参数的绑定和类型转换、请求中文乱码问题的处理、Session和Cookie的使用、Ajax异步请求的处理、文件上传功能的实现、异常处理机制以及拦截器的应用等细节。 对于文件上传,...

    Springmvc完成ajax功能实例详解

    在本文中,我们将深入探讨如何使用Spring MVC框架来实现AJAX功能。AJAX(Asynchronous JavaScript and XML)是一种在不刷新整个页面的情况下与服务器交换数据并更新部分网页的技术。Spring MVC提供了一种简单的方式...

    解决springmvc+mybatis+mysql中文乱码问题

    在上述问题中,当使用Ajax请求Spring MVC后台并从MySQL数据库查询数据时,页面显示中文出现了乱码。这通常涉及到多个环节的字符编码设置,包括前端、后端和数据库。 1. **前端响应头设置**: 在Ajax请求中,响应头...

    Spring MVC参数传递中文乱码解决方法分享

    三、解决 Ajax 请求中文乱码问题 对于 Ajax 请求,我们可以使用同样的方法来解决中文乱码问题。只需要在 GET 方式中添加 UTF-8 编码支持,并在 Tomcat 服务器中的 server.xml 文件中添加 UTF-8 编码支持。 四、...

    Spring+SpringMVC+MyBatis所需jar包(全部)

    - 解决Ajax中JSON中文乱码问题,通常需要设置Tomcat的字符编码,以及在Servlet容器中配置过滤器,如`CharacterEncodingFilter`,确保请求和响应的编码一致。 5. **jar包说明**: 压缩包中的jar包涵盖了Spring、...

    解决Ajax加载JSon数据中文乱码问题

    完成上述修改后,SpringMvc将能够正确处理`text/plain`类型的数据,并以UTF-8编码返回,从而解决Ajax加载JSON数据时的中文乱码问题。 三、总结 解决Ajax加载JSON数据中文乱码问题的关键在于确保服务器端正确设置...

    SpringMVC学习笔记+学习源码.zip

    12. **Ajax和RESTful API支持**:SpringMVC可以方便地处理Ajax请求,并支持创建RESTful风格的API。 13. **视图技术**:SpringMVC支持多种视图技术,如JSP、FreeMarker、Thymeleaf等,允许开发者根据项目需求选择...

    springmvc上传下载并且保存到数据库

    在实际项目中,你还需要关注代码的可维护性、扩展性以及与前端的交互,例如使用 AJAX 进行无刷新上传和下载,或者利用 Vue.js、React.js 等前端框架构建更友好的用户界面。同时,确保你的应用符合相关的安全标准和...

    用ajax传递json到前台中文出现问号乱码问题的解决办法

    在进行Web开发时,使用AJAX技术与服务器进行异步通信,然后将服务器返回的JSON数据展示在前端页面上是一种常见需求。...通过上述方法,可以有效解决使用AJAX传递JSON数据到前台时出现的中文乱码问题。

    SpringMVC4.0.3+Mybatis3.2.5+EasyUI1.4.1 Demo

    该项目使用springmvc4.0.3 + Mybatis3.2.5 前端使用easyUI1.4.1 ...1.ajax请求,返回JSON数据,有中文乱码解决方案 2.登陆拦截,未登陆过的用户将跳转到登陆页面 3.邮件发送 4.企业级前端界面 5.前端数据分页、查询

Global site tag (gtag.js) - Google Analytics