Java Jar вызывается из unix, некоторые специальные символы печатаются неправильно - PullRequest
0 голосов
/ 11 октября 2018

У меня есть скрипт Unix, который вызывает java jar и выдает зашифрованный текст (без специальных символов) в качестве входных данных.Код Java расшифровывает его, а затем отправляет расшифрованное сообщение в базу данных.

Но иногда специальные символы (à, ē) выдаются в качестве входных данных.Таким образом, они зашифрованы и отправлены в файл JAR.Пока все хорошо, но когда мы печатаем расшифрованное сообщение, символы spl преобразуются в знаки вопроса.Я попытался напечатать некоторые специальные символы напрямую.Они также конвертируются в вопросительные знаки, когда я запускал скрипт Unix вручную.Вывод - ненужные символы вместо вопросительных знаков или специальных символов.

Когда я пытаюсь поместить несколько журналов, подобных этому LOGGER.info("áéróspåcê"), он преобразуется в ?? r? Sp? C?когда скрипт запускается через crontab, тогда как «áéróspåcê» преобразуется в «spà ¥ cû, когда я запускаю скрипт вручную.

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Вывод на дисплей определяется LOCALE и шрифтами, доступными в терминале.Кроме того, хотя Java использует UTF, в зависимости от того, как представлен этот зашифрованный текст, нет никакой гарантии, что данные представлены в виде UTF.

Вы можете попробовать в командной строке Unix команду locale, особенно * 1004.* и потенциально LC_ALL.

$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_ALL=

С UTF-8 и правильными шрифтами для терминала, он будет отображаться правильно.

Однако могут быть проблемы с тем, какзашифрованный текст представляется java-программе, что может вызвать другие проблемы.

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

0 голосов
/ 11 октября 2018

Боюсь, консоль Windows не поддерживает специальные символы, как бы это сообщение не относилось к этой проблеме Как использовать символы Юникода в командной строке Windows?

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