1. 程式人生 > >解決@ResponseBody註解返回中文亂碼

解決@ResponseBody註解返回中文亂碼

昨天在做專案的時候用@ResponseBody註解,發現返回頁面上的中文是亂碼,解決過程也是讓我很鬱悶!!!特此記錄一些。目前有下面幾種解決方案:

@RequestMapping的produces方法

第一種解決方案是使用@RequestMapping註解的produces方法。寫法如下:
@RequestMapping(value = "testPersonalValidtor.do",produces = "application/json;charset=utf-8")
在方法上加上這個註解就可以了。但是這樣寫的話有限制,只能在特定的方法上面使用。如果需要全域性都使用的話,需要修改SpringMVC的配置檔案。

使用messageConverters

第二種解決辦法是使用HttpMessageConverter介面的相關實現類。我們先看配置檔案中的配置資訊。
	<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" >
		<property name="messageConverters">
			<list>
				<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
				<bean class="org.springframework.http.converter.StringHttpMessageConverter">
					<property name="supportedMediaTypes">
						<list>
							<value>text/plain;charset=utf-8</value>
							<value>text/html;charset=UTF-8</value>
						</list>
					</property>
				</bean>
			</list>
		</property>
	</bean>
並且需要在Maven依賴中配置上Jackjson的依賴。
		<dependency>
			<groupId>org.codehaus.jackson</groupId>
			<artifactId>jackson-mapper-asl</artifactId>
			<version>1.9.13</version>
		</dependency>
		<dependency>
			<groupId>org.codehaus.jackson</groupId>
			<artifactId>jackson-core-asl</artifactId>
			<version>1.9.13</version>
		</dependency>
昨天讓我鬱悶的是,我這樣配置了之後確依然是不生效。後來才發現是位置放的不對,需要把這段配置放到<mvc:annotation-driven />的上面。真是很無語的感覺!!! 注意:一定要放到<mvc:annotation-driven />的上面,否則不會生效。

使用<mvc:message-converters>

     還有一種方式是在SpringMVC的配置檔案中的<mvc:annotation-driven>中加入<mvc:message-converters>的配置。具體配置內容如下:
    <!-- SpringMVC註解驅動 -->
    <mvc:annotation-driven>
        <mvc:message-converters>
            <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <value>text/plain;charset=utf-8</value>
                        <value>text/html;charset=UTF-8</value>
                    </list>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>

注意:始用這種配置的時候,需要去掉RequestMappingHandlerMapping、RequestMappingHandlerAdapter或者DefaultAnnotationHandlerMapping、AnnotationMethodHandlerAdapter的Bean配置,要不然可能會不生效。 另外:對於請求對映處理類返回型別可以是String也可以是Object(如果Object是JavaBean的話,SpringMVC會用Jackson來轉換成json字串).例子如下:
    @RequestMapping(value = "testPersonalValidtor.do")
    @ResponseBody
    //直接返回物件
    public Object testPersonalValidtor(@Valid PersonScope personScope, BindingResult bindingResult){
        if(bindingResult.hasErrors()){
            StringBuffer sb = new StringBuffer();
            for(ObjectError objectError : bindingResult.getAllErrors()){
                sb.append(((FieldError)objectError).getField() +" : ").append(objectError.getDefaultMessage());
            }
            return sb.toString();
        }else{
            return personScope;
        }
    }





相關推薦

解決@ResponseBody註解返回中文亂碼

昨天在做專案的時候用@ResponseBody註解,發現返回頁面上的中文是亂碼,解決過程也是讓我很鬱悶!!!特此記錄一些。目前有下面幾種解決方案: @RequestMapping的produces方法

【SpringMVC】解決@ResponseBody註解返回中文亂碼

@ResponseBody @RequestMapping(value="/toPerBirthday.do") public String getIndexPerBasicInfo(HttpServletRequest request, HttpServletResponse response,M

@ResponseBody註解返回中文亂碼

esp 中文亂碼 bsp ppi app span idt set body 第一種方法: @RequestMapping(value = "testPersonalValidtor",produces = "application/json;charset=utf-8")

spring ajax以及頁面返回中文亂碼問題解決

clas ring 文件中 message prop div ann default pri 在spring配置文件中添加 <!--返回中文亂碼--> <mvc:annotation-driven > <!-- 消息轉

Springboot @ResponseBody返回中文亂碼

最近我在把Spring 專案改造Springboot,遇到一個問題@ResponseBody返回中文亂碼,因為response返回的content-type一直是application/json;charset=ISO-8859-1。經過幾天的努力,終於找到最終原因,希望能幫助大家! 推薦1:在@Respo

Springboot 解決返回中文亂碼問題

package com.caib.commons.handlerInterceptor; import org.springframework.context.annotation.Bean; import org.springframework.http.converter.HttpMess

HttpClient Get請求中返回中文亂碼問題解決

1、Get請求中中文亂碼問題,在程式碼中修改了"utf-8"編碼格式,在web.xml檔案中也進行了相應的過濾"utf-8"編碼格式,在tomacat中也配置了URIEncoding="UTF-8",但是在Get請求的時候,返回值依然是中文亂碼。 // 遠端呼叫userC

springmvc返回中文亂碼解決

解決方案一:在spring配置中增加以下配置:<mvc:annotation-driven> <mvc:message-converters register-defaults="true"> <bean

Android Studio解決Java程序輸出中文亂碼

roc 中文 Coding str uil nbsp process option clas 經查閱資料,發現需要手動在build.gradle中添加代碼 //新版 tasks.withType(JavaCompile) { options.encoding = "UT

解決 Linux centos crt 中文 亂碼 問號

Linux centos crt 中文如何查看linux系統語言 echo $LANG一般顯示為en_US.UTF-8這也是系統默認的語言 查看是否有中文語言包 locale若沒有zh_CN.UTF-8相關內容,說明沒有安裝語言包, 安裝方法如下(centos或者RedHat系列,debian使用ap

解決node裏面的中文亂碼

學習 後來 啟動 head 資料 代碼 html har count 今天咋學習node的時候,跟著視頻裏在擼代碼,但是卻出現了中文亂碼的情況,視頻中的谷歌瀏覽器可能和我的版本不一致,先看代碼吧: ‘use strict‘; const http = require

解決CentOS7 Confluence6 PPT中文亂碼問題

服務器 sha 查找 catalina .com 執行 亂碼問題 pts centos 解決CentOS7 Confluence6 PPT中文亂碼問題 Confluence6部署關於Confluence6的部署及平臺基本信息,請參考:CentOS7 Confluence6

python requests返回中文亂碼

ons enc lxml nco res gb2 main def bs4   最近在使用python爬取高考分數線時,獲得的response裏面輸出了中文亂碼: from bs4 import BeautifulSoup import requests def get

SpringBoot解決redirect參數中文亂碼問題

接收 test ati 編碼格式 tst int 發送 字符 sts 代碼如下:&name=" + new URLEncoder().encode(user.getName(), Charset.defaultCharset()) ;只需要將中文參數encode一下

快速解決命令提示符視窗中文亂碼問題--cmd視窗檢視更改編碼方式

一、檢視cmd視窗的編碼方式 方法一 1.開啟cmd 2.在命令列輸入 chcp 3.按下回車鍵,會顯示如下圖所示的一條資訊。“936”代表的意思就是 GBK (漢字內碼擴充套件規範),通常情況下GBK是cmd的預設編碼。 方法二 1.開啟cmd 2.在標題欄單

idea:解決intellij idea控制檯中文亂碼問題

第一步:修改intellij idea配置檔案: 找到intellij idea安裝目錄,bin資料夾下面idea64.exe.vmoptions和idea.exe.vmoptions這兩個檔案,分別在這兩個檔案中新增:-Dfile.encoding=UTF-8 第二步:找到int

如何解決intellij idea控制檯中文亂碼

解決 第一步:修改intellij idea配置檔案: 找到intellij idea安裝目錄,bin資料夾下面idea64.exe.vmoptions和idea.exe.vmoptions這兩個檔案,分別在這兩個檔案中新增:-Dfile.encoding=UTF-8 第二步:找到int

解決請求引數的中文亂碼問題(get、post)

2018-11-28        在web請求與響應中,會遇到亂碼問題,比如填寫表單資料時,難免會輸入中文,姓名、公司名稱等。由於HTML設定了瀏覽器在傳遞請求引數時,採用的編碼方式是UTF-8,但在解碼時採用的是預設的ISO8859-1,因此會導致亂碼的出現。

解決linux下Eclipse中文亂碼問題

已開通新的部落格,後續文字都會發到新部落格 http://www.0xfree.top ---        把Windows下的工程匯入到了Linux下Eclipse中,由於以前的工程程式碼,都是GBK編碼的(Windows下

SpringBoot返回中文亂碼問題(使用的是fastJson)

@SpringBootApplication //下面是自動注入的時候,排除資料庫 //@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class}) public class LearnSpringBootApplicat