2011-01-17 3 views
1

Mac OS X에서 Ruby 1.8.7을 사용하고 있습니다.Ruby에서 ASCII에서 EBCDIC로 변환하는 방법은 무엇입니까?

ASCII를 EBCDIC 인코딩으로 변환하여 기존 시스템과 통신하는 방법은 무엇입니까? jruby에 사용해야합니까?

+0

내 머리가 아파요! –

+0

첫 번째 제안은 iconv가 EBCDIC를 지원하지 않는다는 점을 제외하면'iconv'를 사용하는 것입니다. 이것은 수년 동안 문제가되었습니다. : -/ –

+0

@ 마크 왜 우르두 머리를 아프게합니까? – Surya

답변

1

당신은 코드 세트로 EBCDIC-US를 지정 (2 + 루비) 루비 iconv library (2.0 이전 루비 버전) 또는 iconv gem을 사용해야합니다

irb(main):001:0> require('iconv') 
=> true 
irb(main):002:0> x=Iconv.new('EBCDIC-US','ASCII') 
=> #<Iconv:0x7fb4274d88d8> 
irb(main):003:0> x.iconv("foo") 
=> "\206\226\226" 
+0

"Iconv :: InvalidEncoding : 잘못된 인코딩 ("ascii ","EBCDIC-US ")"이 표시되는 것 같습니다. OSX에서 – Surya

+0

사용중인 iconv의 버전을 알 수 있습니까? –

+0

1.11을 사용 중입니다. – Surya

2

당신은 업그레이드 할 수 있지만 반드시 그렇지 않습니다 문제를 풀다.

EBCDIC (IBM 고맙습니다!)의 여러 가지 맛이 있으므로 메인 프레임에서 사용하는 하위 세트를 식별해야합니다.

오랜 세월 전에 메인 프레임에서 프로그래밍 할 때 배웠던 한 가지 방법은 메인 프레임 sysops를 호출하고 두뇌를 선택하는 것이 었습니다. 그들은 하루 종일 다른 코드 세트에서 EBCDIC 로의 변환을 다루며 아마도 그것을 즉시 수행 할 수있는 도구를 가지고있을 것입니다.

JSON 또는 YAML을 구문 분석 할 수있는 항목이 있는지 확인할 수도 있습니다. 텍스트를 UTF-8로 변환하고 메인 프레임으로 보내면 변환기가 UTF-8에서 EBCDIC로 변환됩니다.

+1

아멘 ("감사합니다!"). IBM의 EBCDIC 개발 경험과 경험이 없었다면, 우리는 현대의 7 비트 ASCII가 어느 정도인지 알 수 없었을 것입니다. 또한이 경험은 조직 초기부터 유니 코드 컨소시엄에 기여한 데 도움이되었습니다. 우리는 오늘날 훨씬 더 악화 될 가능성이 높습니다. 그러나 당신 말이 맞습니다. 관련 메인 프레임 사용자의 EBCDIC CCSID를 식별해야하고 필요하지 않은 경우에도 수행 할 수있는 좋은 방법이 필요할 수 있습니다. ("메인 프레임"이 아닐지라도, 그 아이디어는 여전히 관련이 있습니다.) 그렇지 않다면, UTF-8은 훌륭한 중개자입니다. – user2338816

+0

파이썬에서는 "123".decode ("UTF-8") .encode ("IBM500") 또는 필요한 맛이 무엇이든간에 일반적으로 037, 500입니다. International은 DB2 유니 코드 지원 . 그럼 왜 이것이 Encoding에 있지 않습니까? 루비에 대한 별명 은요? – mckenzm