2016-11-14 19 views
0

JTOpen의 UserSpace 객체를 사용하여 IBMi 시스템에서 읽을 때 데이터가 EBCDIC에서 ASCII로 변환되거나 UserSpace.read() 메소드를 사용하여 EBCDIC로 유지됩니까?JTOpen UserSpace Read

만약 그렇다면 변환하지 않거나 다른 방법으로 데이터를 읽도록 지시하는 방법이 있습니다. 아니면 그냥 데이터의 바이트 표현을 얻을 수있는 방법이 있습니다. 아래는 눈의 사용자 공간을 보았을 때 완벽한 세계에서 긴 문자열이나 바이트 배열로 이상적이라고 생각할 때입니다.

24787779 5158B126 69675175 72536799 
9BC7D489 85795158 B1276A96 A38580A3 
A7676B37 25797288 A3A845D7 9996A674 
74735496 99C7D389 8788A459 B2276866 
96A38C83 A3969036 26797679 53A840D7 
97D9D6E3 C5C3E3D6 D98794C9 C7C8E3E8 

내가 읽으려고 시도하는 사용자 공간은 중요한 경우 CCSID 65535를 사용합니다.

감사합니다.

+0

아래에 언급했듯이 CCSID 65535는 정의에 의해 효과적으로 '변환되지 않습니다'. 인코딩 (예 : EBCDIC에서 ASCII 또는 유니 코드) 사이에 변환이 필요하면 CCSID 65535를 사용하지 마십시오. 그러나 ... CCSID의 바이트 수를 알고 있습니까? 예 : 시스템의 작업에 대한 기본 CCSID는 무엇입니까? 최초 예상 CCSID가 알려진다면 그것은 한 방향으로도 가능해야합니다. – user2338816

답변

0

CCSID 65535는 OS에 데이터를 2 진으로 간주하도록 지시합니다.

따라서 EBCDIC에서 ASCII로 변환되지 않습니다.

변환을 처리하는 올바른 방법은 데이터를 올바른 CCSID로 올바르게 태그 지정하는 것입니다.

그렇지 않으면 AS400Text 클래스에서 사용할 수있는 텍스트 변환을 살펴보십시오.

마지막으로 JDBC의 경우 CCSID 65535를 강제 변환하도록 설정할 수있는 연결 특성이 있습니다. 표준 연결 (AS400Text 일 수 있음)과 유사한 것이 있는지 확실하지 않습니다.

+0

네,하지만 사용자 공간에서 읽을 때 JTopen 도구 상자가 이것을 무시합니까? – bullimar

+0

@bullimar CCSID 65535가 ToolKit에 의해 무시 된 경우 많은 일이 중단됩니다. 바이너리 데이터를 보유한 모든 사용자 공간이 엉망이됩니다. – user2338816

1

* USRSPC 객체는 실제로 메모리의 명명 된 조각입니다. 내부의 데이터에는 원하는 모든 데이터가 포함될 수 있습니다. EBCDIC, ASCII 코드 페이지, UTF-8, UTF-16 또는 원하는대로 인코딩 된 텍스트를 포함 할 수 있습니다. 4 바이트 정수의 배열이나 행렬 또는 링크 된 포인터 목록 또는 기타 비 텍스트 데이터를 포함 할 수 있습니다. 여기에는 텍스트와 텍스트가 아닌 데이터가 혼합되어있을 수 있습니다. 응용 프로그램이 작성하는 모든 것입니다.

UserSpace JT400 API는 * USRSPC 오브젝트에 어떤 데이터가 들어 있는지 모르기 때문에 원시 바이트를 읽습니다. 해당 바이트를 바이트 배열로 읽어 들여 CharConverter.byteArrayToString 메서드를 사용하여이를 Java String 객체로 변환해야합니다. 물론, 65535가 아닌 유효한 텍스트 CCSID를 전달해야합니다.