2012-04-23 3 views
0

jdbc (jt400)를 사용하여 as400 테이블에 데이터를 삽입하십시오. db 테이블 코드 페이지는 424입니다. Host Code Page 424AS400 jdbc 문자 변환

ebcdic 424 코드 페이지는 클라이언트에서 가져올 수있는 많은 문자를 지원하지 않습니다. 예 : 기호 (Ascii 26 Hex 1A)

결과가 올바르지 않습니다.

도구 상자에 지원되지 않는 문자를 제거하는 기본 제공 방법이 있습니까?

답변

0

다른 코드 페이지를 사용하여 실제 파일을 통해 논리 파일을 만들려고 할 수 있습니다. as/400에서는 키워드 CCSID(<num>)을 추가하여 개별 컬럼에 대해 서로 다른 코드 페이지가있는 논리 파일을 작성할 수 있습니다. 심지어 유니 코드 문자 세트로 설정할 수도 있습니다. UTF-16 용 CCSID(1200) 물론 실제 파일은 여전히 ​​424 코드 페이지에있는 문자 만 저장할 수 있으며 문자는 유효하지 않은 문자로 대체 될 것입니다.하지만 번역이 더 좋을 수도 있습니다.

직접 그 코드 페이지와 열의 코드 페이지 (424)에없는 문자를 저장 할 수있는 방법이 없다 (내가 생각할 수있는 유일한 방법은 여러 문자로 어떻게 든 그들을 인코딩되어,하지만하지 가능성이무엇인지 당신이하고 싶은 것은 그것이 "해결"하는 것보다 더 많은 문제를 가져올 것이기 때문입니다).

시스템을 제어 할 수 있고 더 큰 변경을 수행 할 수있는 경우 다른 방법으로 수행 할 수 있습니다. 다른 이름으로 실제 파일의 새로운 유니 코드 버전을 작성하십시오 (CCSID를 제안합니다). (1200), 그건 당신이/400 afaik로 UTF-16에 가깝다. UTF-8은 내 경험상 시스템의 모든 부분에서 지원되지 않는다 .IBM은 유니 코드 용으로 1200을 권장한다.) 이전 파일의 모든 데이터를 새 파일로 이전하는 것보다 먼저 이전 데이터 (예 : 백업!)를 삭제하고 이전 실제 파일의 이름과 함께 새 실제 파일에 논리 파일을 작성하십시오. 해당 논리 파일에서 모든 ccsid 보유 열을 1200에서 424로 변경하십시오. 그런 식으로 기존 프로그램은 여전히 ​​데이터에서 작동 할 수 있습니다. 물론 ccsid 424의 서브 세트에없는 데이터를 삽입하면 논리 파일에 유효하지 않은 문자가 생깁니다. 따라서 새로운 논리 파일을 사용하는 모든 프로그램을 살펴 봐야 할 가능성이 큽니다.