我正在从外部服务器读取一些信息,我无法访问该服务器,并且不知道编码,并且在使用 í
等字符时遇到了一些问题。我所做的是使用下面的代码发出 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
如果我将响应字符串转换为字符数组,我可以看到它没有正确转换,而是分为 6 个字符 \\\\, u, 0, 0、e、d
。
我尝试更改 InputStreamReader 所在位置的编码,以替换字符和一些正则表达式,但没有任何效果。有人遇到这个问题并且可以帮助我吗?
非常感谢。
最佳答案
不确定为什么响应的格式如此,但您可以使用 StringEscapeUtils
将 \u00ed
字符串转换为 í
如下:
String input = "\\u00ed";
String unescaped = StringEscapeUtils.unescapeJava(input);
System.out.println(unescaped);
输出:
í
关于java - 从互联网上读取数据时出现 Double\\,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12109352/