@Override
public void setReadListener(ReadListener readListener) {
}
@Override
public int read() throws IOException {
return byteArrayInputStream.read();
}
@Override
public boolean isReady() {
return false;
}
@Override
public void setReadListener(ReadListener readListener) {
}
};
return servletInputStream;
}
@Override
public BufferedReader getReader() throws IOException {
return new BufferedReader(new InputStreamReader(this.getInputStream(), "UTF8"));
}
@Override
public String getEncoding() {
return "UTF8";
}
二、從服務(wù)器環(huán)境入手 在本地開發(fā)時,由于是windows環(huán)境,編碼格式默認為GBK;而服務(wù)器部署的Linux環(huán)境默認編碼為UTF8,這就導(dǎo)致了文件編碼不匹配的問題。
解決:將所有項目源碼文件的編碼格式統(tǒng)一改為UTF8。
三、從Tomcat配置入手 查看了Tomcat的配置后發(fā)現(xiàn),默認情況下Tomcat會使用ISO88591編碼來處理請求和響應(yīng)數(shù)據(jù)。
解決:修改Tomcat的配置文件server.xml,將其中的Connector端口的URIEncoding屬性設(shè)置為“UTF8”,并重啟Tomcat服務(wù)。
四. 從web應(yīng)用的配置入手 檢查web應(yīng)用的配置文件web.xml,確認是否有設(shè)置請求編碼過濾器或者字符編碼的設(shè)置。
解決:在web.xml中添加如下配置: ... <filter> <filtername>Character Encoding Filter</filtername> <filterclass>org.springframework.web.filter.CharacterEncodingFilter</filterclass> <initparam> <paramname>encoding</paramname> <paramvalue>UTF8</paramvalue> </initparam> <initparam> <paramname>forceEncoding</paramname> <paramvalue>true</paramvalue> </initparam> </filter> <filtermapping> <filtername>Character Encoding Filter</filtername> <urlpattern>/*</urlpattern> </filtermapping> ... 以上步驟完成后,亂碼問題得到了解決。