(急!!!)第三方写好的接口,本地测试返回数据没有问题,放到服务器上面返回数据有部分中文乱码

lcx495052184 2017-04-05 03:40:32
本地调用第三方接口,写方法调用后,返回数据正常,但放到服务器上面时,返回数据就一个中文是问号乱码(就车牌号的那个中文显示两个问号??),其他中文数据正常,不知道是什么原因?求大神解决。。。代码如下:
第三方接口:
http://60.31.215.156:10010/nmlt/ReTurnData.jsp?HPHM=&HPZL=&SFZMHM=&QueryType=1&PHONE=

// 调用接口的方法
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.List;
import java.util.Map;


public class SendHttpReq {

public static String sendReq(String urlStr ,String param) throws Exception{
String response = null;
URL url = new URL(urlStr);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setUseCaches(false); //设置缓存
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("Charset", "utf-8");
conn.setConnectTimeout(15 * 1000);
conn.setReadTimeout(15 * 1000);
PrintWriter out = new PrintWriter(conn.getOutputStream());
out.print(param);
out.flush();
out.close();
conn.connect();
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));
String lines = "";
while ((lines = reader.readLine()) != null) {
System.out.println(lines);
response += lines;
}
reader.close();
conn.disconnect();
return response;
}

// 测试方法:
public class Httptest {
public static void main(String[] args) throws Exception {
String url = "http://60.31.215.156:10010/nmlt/ReTurnData.jsp?HPHM=蒙AS12345&HPZL=02&SFZMHM=
&QueryType=1&PHONE=13100000000";
String result = SendHttpReq.sendReq(url, "");
System.out.println("返回数据为=====" + result);
}
}

// 返回结果是正确的:
返回数据为====
<resCode>0</resCode><resMsg></resMsg><illegalMsg>蒙AS12345【小型汽车】截至2017年04月04日的车辆状态是正常。</illegalMsg>

----------------------------------分隔符--------------------------------
// 放到服务器上后,返回结果为
返回数据为====
<resCode>0</resCode><resMsg></resMsg><illegalMsg>??AS12345【小型汽车】截至2017年04月04日的车辆状态是正常。</illegalMsg>

在线等大神解决!!!

...全文
1066 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
kamyuk 2017-07-18
  • 打赏
  • 举报
回复
请问楼主是怎样解决的?
just4you 2017-05-04
  • 打赏
  • 举报
回复
试试用httpclient4.x,取得Response后,这样试试看。 String content = EntityUtils.toString(response.getEntity(), Consts.UTF_8.toString())
微程序员 2017-04-06
  • 打赏
  • 举报
回复
引用 6 楼 lcx495052184 的回复:
[quote=引用 5 楼 sincewhen12 的回复:] 跨系统的调用,出现的乱码问题,一般来讲都是环境变量不一致造成的,建议修改服务器的编码格式,如果是Linux系统,建议查看lang环境变量 env | grep lang,需要和接口服务器设置的一致
这个服务器是windows服务器,请问如何查看和修改服务器的编码格式?修改完对其他程序运行有影响吗?[/quote] Windows服务器的话,可以修改IIS编码格式
lcx495052184 2017-04-05
  • 打赏
  • 举报
回复
引用 5 楼 sincewhen12 的回复:
跨系统的调用,出现的乱码问题,一般来讲都是环境变量不一致造成的,建议修改服务器的编码格式,如果是Linux系统,建议查看lang环境变量 env | grep lang,需要和接口服务器设置的一致
这个服务器是windows服务器,请问如何查看和修改服务器的编码格式?修改完对其他程序运行有影响吗?
微程序员 2017-04-05
  • 打赏
  • 举报
回复
跨系统的调用,出现的乱码问题,一般来讲都是环境变量不一致造成的,建议修改服务器的编码格式,如果是Linux系统,建议查看lang环境变量 env | grep lang,需要和接口服务器设置的一致
lcx495052184 2017-04-05
  • 打赏
  • 举报
回复
引用 2 楼 vkqiang 的回复:
检查服务器编码,或tomcat是否有uriencoding="utf-8"
tomcat中的server.xml里面的uriencoding="gbk",修改成“utf-8”,还是一样的,没有作用。 请问您说的那个服务器的编码怎么查看?
lcx495052184 2017-04-05
  • 打赏
  • 举报
回复

tomcat中的server.xml里面的uriencoding="gbk",修改成“utf-8”,还是一样的,没有作用。
请问您说的那个服务器的编码怎么查看?
vkqiang 2017-04-05
  • 打赏
  • 举报
回复
检查服务器编码,或tomcat是否有uriencoding="utf-8"
lcx495052184 2017-04-05
  • 打赏
  • 举报
回复
自己先顶一下!!!

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧