Я столкнулся с интересной проблемой (как это часто бывает при взаимодействии с устаревшими системами). Я работаю над приложением (которое в настоящее время работает в системе x86 Linux или Windows), которое может получать запросы от различных систем, одна из которых является системой MVS.
Я пытаюсь определить, какую кодовую страницу / кодировку я должен использовать для интерпретации данных запроса, поступающих из системы MVS.
Раньше я использовал cp500 (IBM-500) для интерпретации байтовой даты, поступающей для систем z / OS, однако я опасаюсь, что, поскольку MVS - это немного устаревшая система, и что, поскольку IBM, похоже, передумала в соответствии с тем, какую кодировку использовать (должны быть десятки кодировок EBCDIC), то cp500 может быть неправильной кодировкой.
Лучший ресурс, который я нашел по наборам символов в Java: http://mindprod.com/jgloss/encoding < / а>. Однако на этом сайте и в Инфоцентрах IBM я не смог получить четкого ответа.
РЕДАКТИРОВАТЬ: Добавлено из моего ответа на Pax ниже:
В моем вопросе была явная дыра в происхождении данных запроса. В этом случае источник данных - через интерфейс Websphere MQ. Websphere MQ имеет средства для преобразования в правильную кодировку, однако это только для чтения данных с помощью MQMessage.readString (), которая с тех пор устарела. Я бы предпочел использовать это, однако я использую проприетарный интерфейс, в котором я не могу изменить способ считывания сообщения из MQQueue, который считывает байты непосредственно из очереди, и, таким образом, я остаюсь обработчиком перевода.
Окончательный ответ: я хотел продолжить это. Оказывается, правильный набор символов действительно был cp500 (IBM-500). Однако у меня сложилось впечатление, что результаты могут отличаться. Несколько советов для тех, у кого такая же проблема:
Используйте Charset.availableCharsets () ;. Это даст вам карту поддерживаемых наборов символов во время выполнения. Я прошел через эти наборы и распечатал свои байтовые данные, переведенные в этот набор символов. Хотя это не дало мне ответа, который я хотел (в основном потому, что я не мог читать данные по мере их поступления), я полагаю, что это может быть полезно для других.
Обратитесь к: http://mindprod.com/jgloss/encoding для получения списка поддерживаемых наборов символов.
Наконец, хотя я не подтвердил это, но убедитесь, что вы используете правильную JRE. Я думаю, что IBM Runtime поддерживает больше наборов символов EBCDIC, чем OpenJDK или Sun Runtime.