double\\

6psbrbz9  于 2021-07-09  发布在  Java
关注(0)|答案(2)|浏览(440)

我正在从一个外部服务器读取一些信息,在那里我没有访问权限,我不知道编码,我遇到了一些字符问题,比如 í . 我所做的是使用下面的代码发出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所在的编码,替换字符和一些regex,但没有一个起作用。有没有人有这个问题可以帮我?
非常感谢你。

wqsoz72f

wqsoz72f1#

不知道为什么这样格式化响应,但是可以使用 \u00ed 进入 í 使用 StringEscapeUtils 具体如下:

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

输出:

í
k97glaaz

k97glaaz2#

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

相关问题