1、Spring mvc @ResponseBody 返回String时 处理 时字符集无法指定?
如果有@ResponseBody注解,在ServletHandlerMethodInvoker中,会新建一个包装的Response,而其中的header都没有指定(不会使用原始response中的头信息)。
之后spring会从request 中的accept头信息中找的一个合适的contenttype,设置成Response的content-type,而request中的accpet是没有charset信息的。最后StringHttpMessageConverter 写信息到流中时,会使用content-type中的charset,如果是空就使用了默认的ISO-8859-1字符集。
返回HttpEntity<T>自己指定content-type头信息(例如html/text;charset=UTF-8),然后spring会将这些信息set到新建的包装的Response中,这样处理string时就使用自己指定的字符集了。
2.hibernate将所有的char(n)类型当作char(1)解析,当这些字段值为empty string时报错。
https://hibernate.onjira.com/browse/HHH-2304
提升hibernate版本解决
4.用apache.commons.compress tar文件时,文件内容相同但是 版本不同(文件日期不同),生成的文件不相同 (md5不相同).
文件日期等属性 在tar 或者 zip之后也会成为文件的一部分了,所以md5不同。
5.user.dir tomcat中如何设置的?linux 和window下有什么不同?
user.dir是在启动jvm时的当前目录
如果有用相对路径找文件的代码,那么启动时就得注意这一点了
6 生成xml包含非法字符?
xml标准对字符有限制,需过滤掉
http://www.w3.org/TR/2008/REC-xml-20081126/#charsets
|
1 2 3 4 |
private static Pattern xmlFilter = Pattern.compile("[\\x00-\\x08\\x0b-\\x0c\\x0e-\\x1f]");
public static String deleteInvalidXMLChar(String str){
return xmlFilter.matcher(str).replaceAll("");
} |
TIPS
maven 打war包之前要clean
取整点的秒数记得把毫秒也设置为0 Calendar.set(Calendar.MILLSECOND,0);
Integer比较用equal,<128的时候==没问题,而容易成为隐藏bug