jinfreaks
2013-08-28 13:12 浏览 245

中文乱码问题

同一个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. 数据库问题

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

4条回答 默认 最新

  • 已采纳
    smiky smiky 2013-08-29 08:44

    应该是new String(request.getParameters(param).getBytes("ISO-8859-1"),'UTF-8');出问题了,这种转换的前提是你的UTF-8的字符不经过处理,直接传输,但是encodeURIComponent是将字符串以UTF-8编码成了类ISO的形式了,你应该用java的encodeURI直接encodeURI(param)

    好久没用JAVA了,你试试看我说的对不对

    点赞 评论 复制链接分享
  • u011379592 King_梦想 2013-08-28 13:28
    1. 看一下自己的页面编码

    2. 尽量用form的post方式提交,后台更转码有风险。

    点赞 评论 复制链接分享
  • tearhero tearhero 2013-08-28 14:21

    (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')配合使用有点不理解;

    点赞 评论 复制链接分享
  • xupei1317_java xupei1317_java 2013-08-29 08:53

    应该配置一下应用服务的URI编码(应该和页面编码一致)

    点赞 评论 复制链接分享