흥미로운 문제가 생겼습니다 (레거시 시스템과 상호 작용할 때 종종 그렇듯이). 현재 MVS 시스템 중 하나 인 다양한 시스템에서 요청을 수신 할 수있는 응용 프로그램 (현재 x86 Linux 또는 Windows 시스템에서 실행되는 응용 프로그램)을 작성하고 있습니다.MVS 시스템에서 Java 환경으로 들어오는 데이터를 해석 할 때 어떤 코드 페이지/문자 세트를 사용해야합니까?
MVS 시스템에서 들어오는 요청 데이터를 해석하는 데 사용해야하는 코드 페이지/문자 세트를 결정하려고합니다.
이전에는 z/OS 시스템에서 사용할 바이트 날짜를 해석하기 위해 'cp500'(IBM-500)을 사용했지만 MVS는 약간의 레거시 시스템이므로 IBM이 (어떤 수의 EBCDIC 인코딩이 있어야합니다.) cp500이 올바른 인코딩이 아닐 수도 있습니다.
Java에서 문자 집합에 대해 가장 잘 알고있는 자료는 http://mindprod.com/jgloss/encoding입니다. 그러나이 사이트와 IBM Infocenters에서 나는 명확한 답을 얻을 수 없었습니다.
편집 : 아래 팍스 내 응답에서 추가는 :
는 요청 데이터의 기원에 내 질문에 눈부신 구멍이 있었다. 이 경우, 데이터의 출처는 Websphere MQ 인터페이스를 통해 이루어집니다. Websphere MQ에는 적절한 인코딩으로 변환 할 수있는 기능이 있지만 MQMessage.readString()을 사용하여 데이터를 읽는 기능 만 제공됩니다.이 기능은 향후 제공되지 않을 예정입니다. 그러나 이것을 사용하는 것을 선호합니다. 그러나 메시지를 MQQueue에서 읽는 방법을 변경할 수없는 독점적 인 인터페이스 프레임 워크를 사용하고 있습니다. MQQueue는 큐에서 직접 바이트를 읽음으로써 변환 처리를 맡았습니다.최종 답변 :이 문제를 후속 조치하고 싶습니다. 올바른 문자 세트는 실제로 cp500 (IBM-500)이었습니다. 그러나 결과가 다를 수 있다는 인상하에 있습니다. 동일한 문제가있는 다른 사용자를위한 도움말 :
Charset.availableCharsets(); 이렇게하면 런타임에 지원되는 문자 집합의 맵을 얻을 수 있습니다. 필자는이 세트를 반복하여 문자 세트로 번역 된 바이트 데이터를 출력했습니다. 그것은 내가 원했던 대답을주지 못했지만 (주로 내가 들어오는 동안 데이터를 읽을 수 없었기 때문에), 다른 사람들에게 도움이 될 수 있다고 상상합니다.
지원되는 문자 집합 목록은 http://mindprod.com/jgloss/encoding을 참조하십시오.
마지막으로, 이것을 확인하지는 않았지만 올바른 JRE를 사용하고 있는지 확인하십시오. 나는 IBM Runtimes가 OpenJDK 또는 Sun의 런타임에서 더 많은 EBCDIC 문자 세트를 지원한다고 생각하고있다.
Andrew, availableCharsets()는 처리 할 수있는 것을 알려주지 만 특정 데이터 집합에 어떤 것을 사용해야하는지 알려주지 않습니다. 아직도 그렇지 않으면 전환이 쓰레기를 반환한다는 것을 알아야합니다. 그러나 IBMs JRE에 대해 옳았습니다. z/OS를위한 추가 기능이 있습니다. – paxdiablo