2017-12-13 7 views
0

두 개의 다른 서버에서 xml을 생성하려고합니다. 두 서버 모두 동일한 CCSID를 갖습니다. 그러나 xml에 프레임이 생기면 '@'문자가 다른 문자로 변환됩니다. 다른 서버에서는 올바르게 표시됩니다. 두 서 v는 모두 동일한 PTF 레벨에 있으며 Java 버전조차 두 서 v 모두 동일합니다. 서버의 차이점은 무엇입니까? 차이점을 어떻게 확인할 수 있습니까? '@'가 다른 문자로 변환되는 이유는 단 하나의 서버에서도 마찬가지입니다.'@'는 두 개의 다른 ibm 서버 (AS400)에서 다르게 표시됩니다.

+0

코드 표시. 아마도'File'에 직접 쓸 것입니다. –

답변

3

이것은 CCSID 문제와 같습니다.

TL; DR
CCSID는 IBM i에서 둘 이상의 위치에 저장되며, 데이터가 어디에서 오는에 따라, 당신은 확인하는 장소의 번호를 가질 수있다.

시스템 값-QCCSID는 시스템 기본 CCSID이지만, 특정 상황에서 놀이로, 그래서 네가 동일해야합니다 제공하지만 전체 이야기가 아닙니다. 오랫동안 주변에 많은 시스템은 QCCSID는 65535로 설정되어 있습니다

작업 CCSID - 각 작업은 자신의 CCSID입니다 가지고있는 시스템 CCSID 기본값은 있지만 사용자 프로필 또는 SBMJOB에 의해 변경 될 수 있습니다 명령. 그러나 그것이 직업에서 CCSID의 전체 이야기는 아닙니다. 작업 CCSID가 65535이면 작업 기본 CCSID는 LANGID을 기 준으로 설정됩니다. 내 시스템 LANGID은 ENU이고 작업 디폴트 CCSID는 37입니다.

데이터베이스 - 각 데이터베이스 테이블에 지정된 CCSID가 있습니다. CRTPF 명령에 지정된 DDS의 경우, SQL의 경우, 작업 디폴트 CCSID가 사용됩니다. 또한 각. 자 데이터 C 럼은 자체 CCSID를 지정할 수 있습니다.

- 디바이스 파일 - 디바이스 파일은 데이터베이스 파일과 마찬가지로 파일 레벨 및 필드 레벨에서 자체 CCSID를 지정할 수 있습니다.

@ 문자는 불변 문자 세트의 일부가 아니므로, 특히 CCSID 65535가 혼합 된 경우 다른 CCSID에서 다르게 표시 될 수 있습니다. 65535는 변환이 없음을 의미합니다. CCSID가 전체적으로 동일해야하고, 65535가있는 경우 CCSID가 서로 일치해야합니다.

CCSID 65535의 최종주의 사항. 시스템에 단일 언어가있는 날로부터의 유지입니다. 그 당시에는 시스템을 사용하는 모든 사람들이 동일한 언어를 사용했기 때문에 문자 집합의 비 변환과 관련된 문제는 없었습니다. 요즘 시스템이 모든 방식으로 연결되고 데이터가 PC 및 웹과 공유되는 CCSID는 시스템의 모든 사용자가 동일한 언어를 사용하더라도 PC, IFS, XML로 인해 여러 개의 CCSID가 계속 발생할 수 있기 때문에 CCSID는 큰 문제가됩니다. , 유니 코드 등이 있습니다. 시스템 CCSID를 65535 이외의 다른 값으로 설정하는 것이 가장 좋습니다.

+0

답변 해 주셔서 감사합니다. 나는 두 서버 (문제가있는 서버와 잘 작동하는 서버)에서 CCSID를 교차 확인했습니다. 두 서버 모두 동일한 ccsid와 job ccsid를가집니다. 우리는 xml을 생성하기 위해 java에 dataq를 보내고 있습니다. Qsnddtaq (여기에서 우리는 dataq를 Java로 전송)까지 '@'기호가 올바르게 표시됩니다. XML (자바 프로그램에서 생성)에서만 '§'로 변경됩니다. 이것이 AS400 또는 Java의 문제입니까? – Susmitha