0

我正在从无法访问的外部服务器读取一些信息,我不知道编码,并且遇到了一些字符问题,例如í. 我所做的是使用下面的代码发出 POST 请求,然后我解析它。

String response = "";
URL url = new URL(pURL);
URLConnection uc = url.openConnection();
if (sid!=null) uc.setRequestProperty("Cookie", sid);
uc.setDoOutput(true);
OutputStreamWriter osw = new OutputStreamWriter(uc.getOutputStream());
osw.write(request);
osw.flush();
InputStreamReader isr = new InputStreamReader(uc.getInputStream(), "UTF8");
BufferedReader br = new BufferedReader(isr);
String content;
while ((content = br.readLine())!=null){
  response += content;
}
br.close();
osw.close();

此时,如果我打印它显示的字符串 a \\,我的意思是,í而不是\u00ed出现\\\u00ed,如果我将响应字符串转换为 char 数组,我可以看到它没有正确转换,而是分为 6 个 chars \\\\, u, 0, 0, e, d

我试图更改 InputStreamReader 所在的编码,以替换字符和一些正则表达式,但没有一个起作用。有没有人有这个问题,可以帮助我吗?

非常感谢你。

4

2 回答 2

1

不知道为什么响应是这样格式化的,但是您可以将字符串转换\u00edíusing StringEscapeUtils,如下所示:

String input = "\\u00ed";
String unescaped = StringEscapeUtils.unescapeJava(input);
System.out.println(unescaped);

输出:

í
于 2012-08-24T12:30:08.930 回答
0
response.replaceAll("\\","\");
于 2012-08-24T12:43:09.863 回答