丢弃服务器XML响应中返回的不可打印字符

时间:2011-01-09 08:14:41

标签: java xml utf-8 bing-api

在尝试使用Bing API进行搜索时,我收到的字符不可打印,似乎没有任何额外信息。目标是将XML(UTF-8)响应保存为稍后要解析的文本文件。

我的代码目前看起来像这样:

    URL url = new URL(queryURL);

    BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
    BufferedWriter out = new BufferedWriter(new FileWriter(query+"-"+saveResultAs));
    String str = in.readLine();
    out.write(str);

    in.close();
    out.close();

当我将'str'的内容发送到控制台时,它看起来像这样:

alt text

这是新创建的本地XML文件的样子:

alt text

我应该怎么做才能转换UTF-8文本,以便str没有额外的字符?

2 个答案:

答案 0 :(得分:2)

如果您事先知道编码,那么

BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));

和作者一样......在你的例子中写完你的文件后,在平台默认情况下进行编码,同时仍然声明为UTF-8。

从XML声明中读取编码可能是明智之举,以避免出现意外。

如果您只想存储数据供以后使用,那么无论如何都无需编码/解码。只需读取字节并将其写出即可。继续检测XML解析器的编码任务..

答案 1 :(得分:1)

XML解析器将处理编码/解码,相应的字符将反馈给您(例如,SAX解析器将通过characters()方法回调执行此操作)。您需要做的就是将其存储在合适的文件中(可能包含合适的Byte-Order-Mark?)