Java 不同IDE中Junit测试的不同结果
file.xml包含以下内容:©编码为UTF-8 使用libsjdom2-2.06、hamcrest-core-1.3和junit-4.11 当我在IntelliJ中运行此命令时,输出是这样的:) 当我在NetBeans中运行它时,输出是这样的:1 如果我将代码放到publicstaticvoidmain并运行它,那么一切都是正常的 如果我将FileReader更改为FileInputStream,则一切正常 如果我将FileReader更改为StringReader©则一切正常Java 不同IDE中Junit测试的不同结果,java,intellij-idea,netbeans,junit,libs,Java,Intellij Idea,Netbeans,Junit,Libs,file.xml包含以下内容:©编码为UTF-8 使用libsjdom2-2.06、hamcrest-core-1.3和junit-4.11 当我在IntelliJ中运行此命令时,输出是这样的:) 当我在NetBeans中运行它时,输出是这样的:1 如果我将代码放到publicstaticvoidmain并运行它,那么一切都是正常的 如果我将FileReader更改为FileInputStream,则一切正常 如果我将FileReader更改为StringReader©则一切正常 可能是什么?读
可能是什么?读取文件时没有指定字符集,因此它使用JVM默认值,从IntelliJ运行的afaik通常默认为UTF-8,而Eclipse至少在Windows上默认为默认的非unicode字符集,例如西欧的Cp1252 您需要明确,如以下文件中所述: 此类的构造函数假定默认字符 编码和默认字节缓冲区大小是合适的。指明 您可以自己创建这些值,然后在 FileInputStream 换言之:
import org.jdom2.Document;
import org.jdom2.input.SAXBuilder;
import java.io.FileReader;
public class Test1 {
@org.junit.Test
public void main() throws Exception {
SAXBuilder sax = new SAXBuilder();
Document doc = sax.build(new FileReader("resources/file.xml"));
System.out.println(doc.getRootElement().getText());
}
}
或者,让SAXBuilder为您处理这个问题,并给它一个InputStream。我相信——但我不是100%确定——这将决定XML声明的字符集:
new InputStreamReader(new FileInputStream("resources/file.xml"), StandardCharsets.UTF_8)
读取文件时没有指定字符集,因此它使用JVM默认值,从IntelliJ运行的afaik通常默认为UTF-8,而至少在Windows上,Eclipse默认为默认的非unicode字符集,例如西欧的Cp1252 您需要明确,如以下文件中所述: 此类的构造函数假定默认字符 编码和默认字节缓冲区大小是合适的。指明 您可以自己创建这些值,然后在 FileInputStream 换言之:
import org.jdom2.Document;
import org.jdom2.input.SAXBuilder;
import java.io.FileReader;
public class Test1 {
@org.junit.Test
public void main() throws Exception {
SAXBuilder sax = new SAXBuilder();
Document doc = sax.build(new FileReader("resources/file.xml"));
System.out.println(doc.getRootElement().getText());
}
}
或者,让SAXBuilder为您处理这个问题,并给它一个InputStream。我相信——但我不是100%确定——这将决定XML声明的字符集:
new InputStreamReader(new FileInputStream("resources/file.xml"), StandardCharsets.UTF_8)
编码问题。为什么IntelliJ不受这些问题的影响编码问题。为什么IntelliJ不受这些问题的影响