从互联网上阅读时出现双\\

时间:2012-08-24 12:23:06

标签: java encoding character

我正在从外部服务器上读取一些我无法访问的信息,而且我不知道编码,而且我遇到了í等字符的问题。我做的是使用下面的代码的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();

此时,如果我打印字符串会显示\\,我的意思是,对于í而不是显示\u00ed会出现\\\u00ed并且如果我转换了回复字符串到char数组,我可以看到它不是正确转换它,而是分为6个字符\\\\, u, 0, 0, e, d

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

非常感谢。

2 个答案:

答案 0 :(得分:1)

不确定为何以这种方式格式化回复,但您可以使用StringEscapeUtils\u00ed的字符串转换为í,如下所示:

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

<强>输出:

í

答案 1 :(得分:0)

response.replaceAll("\\","\");