2012-08-24 89 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