Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用UTF-8读取输入流?_Java_Xml_Utf 8_Inputstream - Fatal编程技术网

Java 如何使用UTF-8读取输入流?

Java 如何使用UTF-8读取输入流?,java,xml,utf-8,inputstream,Java,Xml,Utf 8,Inputstream,欢迎大家 我正在开发一个Java应用程序,它从internet调用一个PHP,并给我一个XML响应 在响应中包含这个词:“Próximo”,但是当我解析XML的节点并将响应获取为字符串变量时,我收到的是这样的词:“Pró;ximo” 我确信问题在于我在Java应用程序中使用了不同的编码,然后是PHP脚本的编码。然后,我想我必须将编码设置为与PHP xml中的UTF-8相同 这是我用来从PHP获取XML文件的代码 ?要将编码设置为UTF-8,我应该对此代码进行哪些更改?(请注意,我没有

欢迎大家

我正在开发一个Java应用程序,它从internet调用一个PHP,并给我一个XML响应

在响应中包含这个词:“Próximo”,但是当我解析XML的节点并将响应获取为字符串变量时,我收到的是这样的词:“Pró;ximo”

我确信问题在于我在Java应用程序中使用了不同的编码,然后是PHP脚本的编码。然后,我想我必须将编码设置为与PHP xml中的UTF-8相同

这是我用来从PHP获取XML文件的代码

?要将编码设置为UTF-8,我应该对此代码进行哪些更改?(请注意,我没有使用Buffered reader,我使用的是输入流)


当您从中获取
InputStream
读取
byte[]
s时。创建字符串时,将
字符集
传递给“UTF-8”。例如:

byte[] buffer = new byte[contentLength];
int bytesRead = inputStream.read(buffer);
String page = new String(buffer, 0, bytesRead, "UTF-8");
注意,您可能希望使缓冲区的大小合理(如1024),并连续调用
inputStream.read(buffer)


@阿米尔·帕沙扎德

是的,您也可以使用InputStreamReader,并尝试将parse()行更改为:


InputStreamReader呢?有没有一种解决方案不需要将整个
InputStream
预先读入内存?有时它可能相当大…我无法用您的解决方案修复我的代码。。。拜托,你能用你的解决方案编辑我的代码,这样我就可以用我的php xml文件测试它吗?@TomaszNurkiewicz是的,你可以将它写入一个文件,然后将文件传递到
db.parse()
,正如其他人所指出的,这不是编码问题。HTML实体ó;正在作为提要的一部分发送,从中获取可读字符的唯一方法是转换实体。您确定这是编码问题吗?您是否使用web浏览器测试过PHP内容?我认为源XML包含转义字符!你在这里问了另一个问题:@kgb的答案是你应该看到的。这不是编码问题。xml的内容似乎是一些html数据,这些数据被转义了。你需要摆脱它。下面的链接向您展示了html如何在外国语言中转义某些特殊字符
byte[] buffer = new byte[contentLength];
int bytesRead = inputStream.read(buffer);
String page = new String(buffer, 0, bytesRead, "UTF-8");
Document doc = db.parse(new InputSource(new InputStreamReader(in, "UTF-8")));