1

在尝试使用 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”的内容发送到控制台时,它看起来像这样:

替代文字

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

替代文字

我应该怎么做才能转换 UTF-8 文本以使 str 没有多余的字符?

4

2 回答 2

2

如果您事先知道编码,则应该

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

作家也是如此……在您的示例中,您的文件在编写后以平台默认值编码,同时仍声明为 UTF-8。

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

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

于 2011-01-09T11:00:04.647 回答
1

XML 解析器将处理编码/解码,并将适当的字符反馈给您(例如,SAX 解析器将通过characters()方法回调执行此操作)。然后,您需要做的就是将其存储在合适的文件中(也许使用合适的Byte-Order-Mark?)

于 2011-01-09T12:48:13.880 回答