Консоль Eclipse не печатает китайские иероглифы - PullRequest
0 голосов
/ 16 мая 2018

Я написал функцию Java, которая принимает строковый параметр и генерирует из него случайный идентификатор, используя некоторую логику. Все работает нормально, если моя строка содержит английские символы, но когда я передаю китайские символы, они заменяются на ???

Вот мой код:

public static String generateId(String inputString) {
        /**
         * Split input string on the basis of white spaces
         */
        String arr[] = inputString.split(" ");
        /**
         * Change the first character of first substring to lowercase
         */
        String id = arr[0].substring(0, 1).toLowerCase() + arr[0].substring(1);
        if(arr.length > 1)
        {
        for (int i = 1; i < arr.length; i++) {
            /**
             * Change the first character of remaining substrings to uppercase
             * and append to id
             */
            if(arr[i].trim().length() != 0)
            {
                id = id + arr[i].substring(0, 1).toUpperCase() + arr[i].substring(1);
            }
        }
        }
        int length = id.length();
        Random random = new Random();
        /**
         * If the length of id is less than 8 then append random digits to make
         * length equals to 8 else take a substring of length equals to 8
         */
        if (length < 8) {
            int len = 8 - length;
            StringBuilder sb = new StringBuilder(len);
            for (int i = 0; i < len; i++) {
                sb.append((char) ('0' + random.nextInt(10)));
            }
            id = id + sb;

        } else {
            id = id.substring(0, 8);
        }
        /**
         * Append 4 digits random number to make length of id equals to 12
         * characters long
         */
        return id + String.format("%04d", random.nextInt(10000));
    }

Вот мои выводы для разных случаев:

 System.out.println(MyClass.generateId("anyid"));

Вывод: anyid0660920

System.out.println(MyClass.generateId("这是标题"));

Вывод: ???? 14102367

как я могу решить эту проблему?

1 Ответ

0 голосов
/ 16 мая 2018

Измените кодировку консоли на UTF-8,

Перейдите на Run -> Run Configurations -> Common Tab -> Console Encoding (or just Encoding, in newer versions) -> Choose UTF - 8.

По умолчанию это будет латинская кодировка (8859), которая не поддерживает китайский язык.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...