如何解码String?

时间:2014-05-03 05:29:30

标签: java jsp url utf8-decode

您好我正在尝试获取一个网址,我正在获取一个字符串我正在尝试解码该字符串,但整个字符串不解码我如何解码整个字符串解码

这是我的代码

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|लोबिया(बीज)~-|सोयाबीन~-|ढेँचा(बीज)~-

如何获得所需的输出?

提前致谢

3 个答案:

答案 0 :(得分:2)

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

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

  1. 使用conn.getHeaderField("content-type")提取响应媒体类型,
  2. 提取charset参数(如果有)和
  3. 将其用作解码响应输入流的字符集。
  4. 同时您应该检查mediatype是否符合预期,并检查响应状态代码。

    参考文献:

答案 1 :(得分:0)

创建阅读器时指定编码:

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

请勿尝试进行任何其他转换。

答案 2 :(得分:0)

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