javascript - 使用jsp代理解决跨域问题引发的乱码问题
PHPz
PHPz 2017-04-11 11:58:43
[JavaScript讨论组]

今天在做一个界面优化的时候顺便解决其中的QQ昵称查询问题,使用了“http://users.qzone.qq.com/fcg...号码”,出现两个问题,第一个跨域问题,后来用jsp代理解决了,但是出现了中文乱码问题,只要QQ昵称中包含中文一律以“???”显示,现贴出来原网页中js代码和使用的jsp代理代码,希望高手鞥帮看下,谢谢

原网页代码:







QQ昵称查询








jsp代理文件(proxy.jsp):

<%@ page import="java.net.*,java.util.*,java.lang.*,java.io.*"%><%@ page contentType="text/xml;charset=gb2312"%>\
<%  
String url = null;
StringBuffer params = new StringBuffer();
Enumeration enu = request.getParameterNames();
//String str=request.getQueryString();
//System.out.println(str);

while (enu.hasMoreElements()) {
String paramName=(String)enu.nextElement();
if(paramName.equals("url")){
   url=request.getParameter(paramName);
}else{
   //有的url参数顺序有规定,按此读出的是逆序,因此要插到paramName的前面
   params.insert(0, URLEncoder.encode(request.getParameter(paramName), "gb2312"));
   params.insert(0, "=");
   params.insert(0, paramName);
   if(enu.hasMoreElements()){
       params.insert(0, "&");
   }
}
}
url = url + "?" + params.toString();
//out.println(url);
System.out.println("url:"+url);

if(url != null){
// 使用GET方式向目的服务器发送请求
URL connect = new URL(url.toString());
URLConnection connection = connect.openConnection();
connection.connect();
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
while((line = reader.readLine()) != null){
   out.println(line);
}
reader.close();
}
%>

实在不知道原因,希望哪位前辈能帮解答下,谢谢

PHPz
PHPz

学习是最好的投资!

全部回复(2)
PHP中文网

如果是JAVA程序要做跨越的问题,你只要引入CORS就好了。根本不需那么复杂。

ringa_lee

@召唤大神
如果uins后面跟的是非数字的话,返回的是utf-8格式
如果是正确的数字,返回的是GBK格式
你可以试试手动返回一个字符串到页面 看是否乱码,不管干什么, 乱码问题无非 页面文件编码,web容器编码,网络传输编码,或者手动设置编码

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号