天天看點

傳回ajax時亂碼,ajax請求傳回亂碼(示例代碼)

packageorg.springframework.http.converter;importjava.io.IOException;importjava.io.UnsupportedEncodingException;importjava.nio.charset.Charset;importjava.util.ArrayList;importjava.util.List;importorg.springframework.http.HttpInputMessage;importorg.springframework.http.HttpOutputMessage;importorg.springframework.http.MediaType;importorg.springframework.util.StreamUtils;*}),

* and writes with a {@codeContent-Type} of {@codetext/plain}. This can be overridden

* by setting the {@link#setSupportedMediaTypes supportedMediaTypes} property.

*

*@authorArjen Poutsma

*@since3.0*/

public class StringHttpMessageConverter extends AbstractHttpMessageConverter{public static final Charset DEFAULT_CHARSET = Charset.forName("ISO-8859-1");private finalCharset defaultCharset;private final ListavailableCharsets;private boolean writeAcceptCharset = true;

publicStringHttpMessageConverter() {this(DEFAULT_CHARSET);

}

publicStringHttpMessageConverter(Charset defaultCharset) {super(new MediaType("text", "plain", defaultCharset), MediaType.ALL);this.defaultCharset =defaultCharset;this.availableCharsets = new ArrayList(Charset.availableCharsets().values());

}

public void setWriteAcceptCharset(booleanwriteAcceptCharset) {this.writeAcceptCharset =writeAcceptCharset;

}

@Overridepublic boolean supports(Class>clazz) {return String.class ==clazz;

}

@Overrideprotected String readInternal(Class extends String> clazz, HttpInputMessage inputMessage) throwsIOException {

Charset charset=getContentTypeCharset(inputMessage.getHeaders().getContentType());returnStreamUtils.copyToString(inputMessage.getBody(), charset);

}

@OverrideprotectedLong getContentLength(String str, MediaType contentType) {

Charset charset=getContentTypeCharset(contentType);try{return (long) str.getBytes(charset.name()).length;

}catch(UnsupportedEncodingException ex) {//should not occur

throw newIllegalStateException(ex);

}

}

@Overrideprotected void writeInternal(String str, HttpOutputMessage outputMessage) throwsIOException {if (this.writeAcceptCharset) {

outputMessage.getHeaders().setAcceptCharset(getAcceptedCharsets());

}

Charset charset=getContentTypeCharset(outputMessage.getHeaders().getContentType());

StreamUtils.copy(str, charset, outputMessage.getBody());

}

protected ListgetAcceptedCharsets() {return this.availableCharsets;

}privateCharset getContentTypeCharset(MediaType contentType) {if (contentType != null && contentType.getCharSet() != null) {returncontentType.getCharSet();

}else{return this.defaultCharset;

}

}

}