2013-06-18 1 views
-3

일부 ebcdic_1141/cp1252 변환이 필요합니다. 여기 내가 찾은 테이블입니다 :어떻게 전환 표를 만드나요?

http://publib.boulder.ibm.com/infocenter/pcomhelp/v5r9/index.jsp?topic=/com.ibm.pcomm.doc/reference/html/hcp_reference02.htm

당신은 어떻게 그에서 convertions 테이블을 만들 수 있죠. 구체적으로 이해할 수없는 것은 40 이전의 16 진수 값입니다. 그리고 각 문자의 16 진수 값을 가져 오는 방법은 무엇입니까?

감사합니다, 야곱은

+1

어떤 언어로 제공됩니까? 대부분의 언어에는 변환을 인코딩하는 함수가 포함되어 있으므로 원하는 테이블을 지원하는지 확인하십시오. – deceze

+0

내가 사용하는 언어는 delphi입니다. 나는 테이블을 사용할 준비가되지 않았다. –

+0

모든 문자를 매핑 할 수 있다는 보증은 없으며 일부 하위 집합 만 동일합니다. 따라서 "before 40"은 단지 변환 할 수 없을 수도 있습니다. –

답변

1

IBM 1141은 적어도 윈도우 2000부터 시작하여 이미 윈도우 NT의 일부가 될 것으로 보인다. 시스템 관리자에게 제어판/Windows 구성 요소를 통해 설치하도록 요청하십시오.

http://msdn.microsoft.com/en-us/library/windows/desktop/dd317756.aspx

그런 다음, 델파이 버전에 따라 당신은

  1. 사용 된 TEncoding 클래스
  2. 사용 AnsiString 느릅 나무 지정된 코드 페이지 (일명 그것에서 string을 유니 코드 스트링을 지정) 및/또는 SetCodePage 절차를 사용할 수 있습니다
  3. Win32 API MultiByteToWideChar을 사용하여 PAnsiChar을 UTF-16으로 변환 한 다음 1252
  4. 로 다시 변환하십시오.
  5. Jedi CodeLib과 같은 라이브러리를 사용하여 하나의 호출에서 # 3 플립 플롭을 수행하는 프리 디드 래퍼가 있습니다.

모든 문자가 해당 문자 세트간에 매핑되는 것은 아닙니다. 제어 코드 및 발음 구별 부호와 같은 일부 드문 문자는 문자 세트 중 하나에만 표시 될 수 있으며 해당 문자 세트에서 누락 될 수 있습니다. WideCharToMultiByte 기능은 이에 대해 특별히 언급합니다. (성공적인 필요 없음)


대체 방법이 포함될 수 있습니다

  1. 상기 JCL.sf.net는 그것이 자신의 것 할 수 있습니다 자신의 JclUnicode 유닛의이 내장 된지도 대신 윈도우에서 제공하는지도에 의존. IBM1141이 포함되어 있는지 여부는 기억이 안납니다.
  2. IBM Classes for Unicode에는 해당 코드 페이지가 포함될 수도 있지만 그렇지 않을 수도 있습니다. Has anyone used ICU with Delphi?
  3. iconv 라이브러리는 UNIX 시스템에서 시작했지만, 다시 윈도우에 CodeTyphon/Lazarus 같은 IDE를 이식하여 그들이 윈도우에 이식 libiconv을 가져야한다 (아마 MSYS 프로젝트의 일부로서)과 파스칼 헤더가 포함되어 있습니다. CodeTyphon 다운로드를 설치하고 libiconv 단위를 Delphi에서 다시 사용할 수 있는지 확인하십시오.