2012-08-24 57 views
0

我正在阅读外部服务器的某些信息,因为我无法访问,而且我也不知道编码,并且遇到一些字符如í的问题。我所做的是使用下面的代码和之后的POST请求,我解析它。从互联网阅读时出现Double \

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所在的位置,替换字符和一些正则表达式,但都没有工作。有没有人有这个问题,可以帮助我?

非常感谢。

+3

你确定它应该是“UTF8”而不是“UTF-8”? – aioobe

+0

只是为了让您知道:*您的省略换行符* ... – dacwe

+1

您确定该请求正在以UTF-8格式返回数据..您应该检查编码的内容类型响应标头 –

回答

1

不知道为什么响应格式化这种方式,但你可以使用字符串转换与\u00edíStringEscapeUtils如下:

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

输出:

í 
+0

完美!非常感谢你 –

0
response.replaceAll("\\","\"); 
+2

恐怕连编译都不会。 – aioobe