本来一个东西乱码就很折磨人了,这几样东西加在一起。。我觉得我能挺过来就很牛了。闲话不说了,记一个流水帐(按照时间顺序):
1、在开发机器上使用alipay的gbk开发包版本,一切没问题;
2、把完成的程序放在linux(cent 5.3)上,连支付宝的支付页面都打不开,出现ILLEGAL_SIGN错误;
3、第一次疯了。估计是字符集问题,于是改用utf-8版本的接口,解决,能打开支付页面了;
4、支付完了以后,返回的页面没有sign加密测试未通过,还是乱码,找了n个小时,最终发现使用了org.springframework.web.filter.CharacterEncodingFilter,都encode成gbk了,于是修改为utf-8;
5、然后发现很多地方要改,比较难想到的是:css和style文件,要在eclipse里面重新编码成utf-8,其中的中文才可以使用;
6、终于能显示了,随后发现,使用直接tomcat正常,但是通过apache转发又是乱码(导致sign验证不通过),找了n多解决办法,都是说:增加URIEncoding="UTF-8"在aj13的connecter里面,增加了以后仍然不行;
7、最终发现,在<connecter下面配置了一个useBodyEncodingForURI=true,猛然想到:谁知道alipay平台的“browser”以什么编码发送啊?!于是改成false;
8、终于成功。
继续测试了一下,发现:
1、可以不修改apache httpd.conf里面的AddDefaultCharset,是什么都可以,用默认的iso-8859-1挺好;
2、可以不修改<connecter,增加URIEncoding="UTF-8",什么都不加表示用iso-8859-1,正好和apache的配上;
3、可以不修改linux的LANG;
愿看到这个文章的哥们别走弯路了。
还配不出来的话,贴上来我帮你分析分析!