同一个JSP页面,提交的时候JS中用了encodeURIComponent(param)
解码:new String(request.getParameters(param).getBytes("ISO-8859-1"),'UTF-8');
数据库 Oracle NLS_CHARACTERSET : UTF8
问题是:
1. 本机加上(windows7) 提交数据库显示:??
2. 放到服务器上(windows xp)提交数据正常显示中文
如果把解码去掉
1. 本机上正常显示中文
2. 放到服务器上显示乱码æä¸½(不是??)
请问这是怎么回事啊?是什么问题
1. windows环境问题
2. Tomcat设置问题
3. JSP设置问题
4. Servlet问题
5. 数据库问题
应该是new String(request.getParameters(param).getBytes("ISO-8859-1"),'UTF-8');出问题了,这种转换的前提是你的UTF-8的字符不经过处理,直接传输,但是encodeURIComponent是将字符串以UTF-8编码成了类ISO的形式了,你应该用java的encodeURI直接encodeURI(param)
好久没用JAVA了,你试试看我说的对不对
看一下自己的页面编码
尽量用form的post方式提交,后台更转码有风险。
(1)form post提交并不是就没有乱码,而是在过滤器用.setCharacterEncoding("utf-8");可以统一处理;
(2)如果是get请求的参数中带有中文,那就用客户端encodeURIComponent(param) ,然后服务端对应URLDecoder.decode(param,”utf-8”);
(3)环境:有些服务器在服务端会自动执行一次decode,不知道你本机和服务器上web容器是否都是tomcat,server.xml里编码设置是否都是iso-8859-1;
(4)encodeURIComponent(param) 与new String(request.getParameters(param).getBytes("ISO-8859-1"),'UTF-8')配合使用有点不理解;
应该配置一下应用服务的URI编码(应该和页面编码一致)