String tmpsubject = tmpjo.getString("title");
reqVo.setTitle(new String(tmpsubject.getBytes("utf-8"),"utf-8"));
本机测试编码没有问题,但是上线部署这里的编码就出问题了,应该怎么解决?求大神解答
Tomcat 服务器是否配置 URIEncoding 了:
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="8000"
redirectPort="8443" useBodyEncodingForURI="true" URIEncoding="UTF-8" allowTrace="true"/>
使用过滤器
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
1、请求别人的接口接口一般情况下要先确认接口数据的传递方式,然后进行字符集转换
2、如果没有设置一般情况下是“ISO-8859-1”格式,如果实在无法确定就只有判断字符集
/**
* 判断字符集
*
* @param str
* @return
*/
private String getEncoding(String str) {
String encode;
encode = "UTF-16";
try {
if (str.equals(new String(str.getBytes(), encode))) {
return encode;
}
} catch (Exception ex) {
// 打印错误日志到文件
LoggerUtils.error(ex);
}
encode = "ASCII";
try {
if (str.equals(new String(str.getBytes(), encode))) {
return "字符串<< " + str + " >>中仅由数字和英文字母组成,无法识别其编码格式";
}
} catch (Exception ex) {
// 打印错误日志到文件
LoggerUtils.error(ex);
}
encode = "ISO-8859-1";
try {
if (str.equals(new String(str.getBytes(), encode))) {
return encode;
}
} catch (Exception ex) {
// 打印错误日志到文件
LoggerUtils.error(ex);
}
encode = "GB2312";
try {
if (str.equals(new String(str.getBytes(), encode))) {
return encode;
}
} catch (Exception ex) {
// 打印错误日志到文件
LoggerUtils.error(ex);
}
encode = "UTF-8";
try {
if (str.equals(new String(str.getBytes(), encode))) {
return encode;
}
} catch (Exception ex) {
// 打印错误日志到文件
LoggerUtils.error(ex);
}
return "未识别编码格式";
}
String tmpsubject = tmpjo.getString("title");
String encoding = getEncoding(tmpsubject);
String tmpsubjectNew = new String(tmpsubject.getBytes(encoding),"utf-8");