2011-08-26 3 views
0

PB7에서 10.5로 변환 한 후 이전 스토리지 SQL 서버 데이터베이스 아라비아 문자에 문제가 있습니다. 데이터 파일에 문자가 Ö'ÇÑÉ ÕÛíÑÉ와 같은 의미가없는 이상한 기호로 표시됩니까?PB7에서 PB10.5로 변환 후 인코딩 문제

+0

http://stackoverflow.com/questions/7092378/how-to-solve-this-arabic-language-problem-in-sybase-powerbuilder-6-and-7을 참조하십시오. 이것은 당신을 도울 수 있습니다. –

답변

0

PB10 이상으로 마이그레이션 할 때 살펴야 할 두 가지 사항이 있습니다. 의 문자열은과으로 읽은 데이터 (예 : ini 파일 또는 파일 읽기 함수)를 으로 호출합니다. 이유는 PB10이 대신 유니 코드 인 ANSI을 기반으로 한 버전 이었기 때문입니다.

문자열 데이터에 잘 작동했을 때 가비지 문자가있는 문제가 발생하기 시작합니다. 좋은 소식은 PB가 문자열을 필수 형식으로 변환하는 방법을 제공하며 두 가지 기능이 모두 있다는 것입니다.

기본 PB10 인코딩이 UTF-16, 리틀 엔디안 (EncodingUTF16LE!)

PB10에서

의 파워 스크립트 기능 렌(), 왼쪽(), 중간() 및 오른쪽()을 기반으로하는 모든 유니 코드 문자입니다 기존 LenW(), LeftW(), MidW() 및 RightW() 함수와 동일합니다.

유니 코드 문자 대신 문자열을 바이트 또는 ASCII 문자로 조작하려면 LenA(), LeftA(), MidA() 및 RightA() 함수의 새 집합이 추가되었습니다. 'A'함수가 적용되면, PowerBuilder는 유니 코드 문자열을 머신의 로케일에 기반한 DBCS 문자열로 변환 한 다음 작업을 적용합니다. 파일의 읽기/쓰기는 PB10 주변에서 유니 코드로 진행 되었기 때문에 가능합니다. PB는 모든 기존 기능을 유니 코드로 변환하고 새 버전의 기능을 만들었습니다. 따라서 PB10 Powerscript 함수에서 Len(), Left(), Mid()가 유니 코드로 변경되고 새로운 함수 Len이 변경되었습니다.

Blob lbl_data 
lbl_data = Blob("Hello World!", EncodingANSI!) 
ls_data = String(lbl_data, EncodingANSI!) 


// PB10 and higher 
li_FileNum = FileOpen("MyFile.txt", TextMode!, Read!, EncodingANSI!) 

// PB9 and lower you didn't need EncodingANSI! 
//li_FileNum = FileOpen("MyFile.txt", TextMode!) 

EncodingANSI!를 추가하지 않으면 어떻게됩니까? ? 외부 파일에서 가져온 모든 데이터는 읽을 수없는 쓰레기 문자입니다. 이것은 PB10 이상으로 업그레이드 할 때 가장 중요한 문제에 관한 것이지만, 일단 파악한 후에는 해결하는 것이 매우 간단합니다.

데이터베이스 문제가 인코딩과 관련이 없지만 가능하다고 생각합니다. 가비지 문자가 표시되면 인코딩과의 불일치가있을 수 있습니다.

+0

외부 함수 나 파일에서 문자열을 읽는 데 아무런 문제가 없습니다. SQL 서버 데이터베이스의 아라비아어 데이터에 문제가 있습니다. 데이터베이스 테이블의 데이터는이 데이터를 읽을 때 ÓíÇÑÉ ÕÛíÑÉ와 같은 의미가없는 이상한 기호로 문자를 보여줍니다. PB7을 사용하면 좋고 읽을 수있는 것처럼 보입니다. PB10.5를 사용하여 읽을 때 읽을 수없는 것처럼 보입니다. – PBDev