Почему у Дженкинса проблемы с UTF 8 - PullRequest
0 голосов
/ 26 февраля 2020

У меня работает Дженкинс. Я просто хочу получить все файлы. В каждом имени файла есть китайская буква. Итак, проблема в том, что у Дженкинса проблемы с чтением в этих файлах. Дженкинс делает просто "?" из азиатского письма. Вторая проблема. На самом деле это более 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);
    }

Ответы [ 2 ]

1 голос
/ 26 февраля 2020

Альтернативное решение - использовать новый java .nio.Path api вместо java .io.File api

Также попробуйте сначала установить ниже в вашем коде.

System.setProperty("sun.jnu.encoding","utf-8");
System.setProperty("file.encoding","UTF-8");
0 голосов
/ 26 февраля 2020

Если вы используете 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
???????

Когда программа работает с языковым стандартом, поддерживающим UTF-8, либо из среды, либо через Java, вы получите ожидаемый результат:

$ 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"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...