好的,我正在尝试做的是创建一个使用从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的所有方法都没有帮助(但是,他们确实将change改为??)。有没有人知道如何解决这个问题,或者知道一种“标准”方式来读取不需要在文件中提供的XML?
注意 - 我没有提出有问题的网络服务,因此无法对其进行修改,也不知道它是如何工作的。
答案 0 :(得分:0)
你为什么不试试
XMLnode = XML code.replaceAll(“\ s”,“”)
答案 1 :(得分: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()