0

好的,所以我要做的是创建一个使用从 Web 服务获得的数据的 java 程序。我可以得到数据,但它是 XML 文档的格式,当我将它打印到(Eclipse)控制台时,每个字母之间都有空格,并且 replaceAll 方法不起作用。代码的相关部分如下。

BufferedReader reader = new BufferedReader(new InputStreamReader(new URL(webAdress).openStream()));
String XMLcode = reader.readLine();
XMLcode = XMLcode.concat(reader.readLine());
XMLcode = XMLcode.replaceAll(" ", "");
System.out.println(XMLcode); //in the finished program, I will do something with the data in the XML document.

结果看起来像这样-

þÿ < ? x m l  v e r s i o n = " 1 . 0 " e n c o d i n g = " U T F - 8 " ? >

其次是我正在寻找的实际数据。一些互联网搜索暗示 þÿ 意味着这是一个文本编码问题,但我能找到的将 UTF-8 转换为 UTF-16 的所有方法都没有帮助(但是,他们确实将 þÿ 更改为 ??)。有谁知道如何解决这个问题,或者知道一种“标准”的方式来读取不需要在文件中提供的 XML?

注意-我没有制作有问题的网络服务,因此无法修改它,也不知道它是如何工作的。

4

2 回答 2

0

你为什么不试试

XMLcode = XMLcode.replaceAll("\s","")

于 2012-06-10T20:13:58.490 回答
0

也许是一个好主意尝试:

new BufferedReader(new InputStreamReader(new URL(webAdress).openStream(), "UTF-16"));

您可以使用以下代码对其进行测试:

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;

public class CharsetChanging {

    public static void main(final String[] args) throws IOException {

        File infile = new File("/tmp/utf16.txt");

        FileInputStream inputStream = new FileInputStream(infile);

        Reader in = new InputStreamReader(inputStream, "UTF-16");

        int read;

        while ((read = in.read()) != -1) {
            System.out.print(Character.toChars(read));
        }

        in.close();
    }
}

只需替换new FileInputStream(infile)new URL(webAdress).openStream()

于 2012-06-10T20:26:29.783 回答