2014-05-03 111 views
0

你好我试图获取由我得到一个字符串我试图那个字符串解码,但整个字符串不解码我怎么可以解码整个字符串解码如何解码字符串?

下面的网址是我的代码

geturl.jsp

<% 

    URL url; 

    try { 
     // get URL content 

     String a = "http://122.160.81.37:8080/mandim/MarketWise?m=agra"; 
     url = new URL(a); 
     URLConnection conn = url.openConnection(); 
     // open the stream and put it into BufferedReader 
     BufferedReader br = new BufferedReader(
       new InputStreamReader(conn.getInputStream())); 

     StringBuffer sb = new StringBuffer(); 
     String inputLine; 
     while ((inputLine = br.readLine()) != null) { 
      String str = new String(inputLine.getBytes(), "utf-8"); 
      out.println(str); 
     } 
    } catch (MalformedURLException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
%> 

我得到下面的输出

धान~1325|चावल~2050|ज�?वर~920|जौ~810|मकई~1280|गेहू�?~1420|जो~1050|बेजर~-|जय~800|उड़द~3600|मूंग~4400|चाना~3400|मटर~2700|अरहर~4100|मसूर~2000|लोबिया(बीज)~-|सोयाबीन~-|ढे�?चा(बीज)~- 

我在这里得到一些?符号

所需的输出

धान~1325|चावल~2050|ज्वर~920|जौ~810|मकई~1280|गेहूँ~1420|जो~1050|बेजर~-|जय~800|उड़द~3600|मूंग~4400|चाना~3400|मटर~2700|अरहर~4100|मसूर~2000|लोबिया(बीज)~-|सोयाबीन~-|ढेँचा(बीज)~- 

我怎样才能得到我想要的输出?

new InputStreamReader(conn.getInputStream(), "UTF-8")); 

不要试图做任何其他的转换:

在此先感谢

回答

0

当您创建他的读者指定的编码。

0

您可以看到许多使用utf-8编码的字符,但少数字符除外。因此,请确保您的系统中安装了支持所有这些字体的正确字体。

2

如果您可以假设编码是“UTF-8”,那么请使用@ Joni的解决方案。

但技术上更正确的解决方案是:

  1. 使用conn.getHeaderField("content-type")以提取反应介质类型,
  2. 提取charset参数(如果有的话),和
  3. 使用,作为字符集用于解码响应输入流。

同时您应该检查mediatype是否是您期望的并检查响应状态代码。

参考文献: