Как конвертировать набор символов в Java? - PullRequest
0 голосов
/ 18 мая 2018
SftpFile agencyFile = (SftpFile)agencyiter.next();

LOGGER.info(" agencyFile.getAbsolutePath() "+ agencyFile.getAbsolutePath());

Вывод:

agencyFile.getAbsolutePath() /Agency_Ja????n

В моем коде выше я получаю agencyFile.getAbsolutePath() как со специальными символами, такими как ???.

Какможно ли их избежать?

Я попробовал также следующий код, но получил тот же вывод.

byte[] ptext = agencyFile.getAbsolutePath().getBytes(ISO_8859_1); 
String value = new String(ptext, UTF_8); 

1 Ответ

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

Пока вы находитесь в Java, вам не нужно беспокоиться о кодировке строки.Вам нужно беспокоиться, только если ваша строка пересекает границу вашего Java-приложения с внешним миром, как сериализованный байтовый массив (содержимое файла, поток сокетов и т. Д.), Называемый I / O.

Содержит ли ваш ptext значение 0x3F (которое является байтовым кодом ?)?

Если да, то ваша проблема уже возникла при создании экземпляра SftpFile.Отладьте эту область кода и проверьте, что введено в качестве пути к экземпляру вашего файла (и откуда оно взято).

Если нет: существует символ, который не может быть напечатан вашей консолью или средством просмотра файлов.Сконфигурируйте свой Logger для записи вывода UTF-8.Тогда его сможет отобразить любой обычный редактор (например, Notepad ++, UltraEdit и т. Д.).Конечно, в вашей ОС должен быть установлен соответствующий шрифт.

...