我正在运行詹金斯的工作。我只想获取所有文件。每个文件名中都有一个中文字母。所以现在的问题是,詹金斯在读取这些文件时遇到了问题。詹金斯只说“?”出亚洲字母。第二个问题是。实际上,它有100多个文件。但是詹金斯只给了我20个文件。也许由于问号“?”,现在很多文件看起来都一样。
有人知道我该如何解决。该问题仅发生在Jenkins(在Linux上运行)上。在我的Eclipse本地计算机上,它仍然可以工作。
File resourcePath = new File("resources/china_data/");
File[] files = resourcePath.listFiles();
for (final File file : files)
{
System.out.console(file.getName);
}
答案 0 :(得分:1)
另一种解决方案是使用新的java.nio.Path api代替java.io.File api
还请尝试在代码中首先设置以下内容。
System.setProperty("sun.jnu.encoding","utf-8");
System.setProperty("file.encoding","UTF-8");
答案 1 :(得分:0)
假设您使用的是System.out.println
,则当程序以ASCII语言环境运行时会发生这种情况:
$ cat Main.java
import java.util.*;
import java.io.*;
class Main {
public static void main(String[] args) throws Exception {
File resourcePath = new File("resources/china_data/");
File[] files = resourcePath.listFiles();
for (final File file : files)
{
System.out.println(file.getName());
}
}
}
$ javac Main.java
$ LC_CTYPE=C java Main
???????
当程序从环境或通过Java配置并具有支持UTF-8的语言环境运行时,您将获得预期的结果:
$ LC_CTYPE=en_US.UTF-8 java Main
中华人民共和国
$ LC_CTYPE=C java -Dfile.encoding=UTF-8 Main
中华人民共和国
如果不确定如何配置服务器,也可以在Java中执行此操作:
System.setOut(new PrintStream(System.out, true, "UTF-8"));