返回ajax时乱码,ajax请求返回乱码(示例代码)

/** Copyright 2002-2014 the original author or authors.

*

* Licensed under the Apache License, Version 2.0 (the "License");

* you may not use this file except in compliance with the License.

* You may obtain a copy of the License at

*

*http://www.apache.org/licenses/LICENSE-2.0*

* Unless required by applicable law or agreed to in writing, software

* distributed under the License is distributed on an "AS IS" BASIS,

* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

* See the License for the specific language governing permissions and

* limitations under the License.*/

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;/*** Implementation of {@linkHttpMessageConverter} that can read and write strings.

*

*

By default, this converter supports all media types ({@code*/*}),

* 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;/*** A default constructor that uses {@code"ISO-8859-1"} as the default charset.

*@see#StringHttpMessageConverter(Charset)*/

publicStringHttpMessageConverter() {this(DEFAULT_CHARSET);

}/*** A constructor accepting a default charset to use if the requested content

* type does not specify one.*/

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

}/*** Indicates whether the {@codeAccept-Charset} should be written to any outgoing request.

*

Default is {@codetrue}.*/

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());

}/*** Return the list of supported {@linkCharset}s.

*

By default, returns {@linkCharset#availableCharsets()}.

* Can be overridden in subclasses.

*@returnthe list of accepted charsets*/

protected ListgetAcceptedCharsets() {return this.availableCharsets;

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

}else{return this.defaultCharset;

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值