ruby에서 문자열 인코딩 방법 조언 부탁드립니다.

pythontest의 이미지

요점은 CP949로 인코딩된 한글을 UTF-8로 변환 해야 하는데요

문제의 발단은 한글로된 실행 파일을 실행 시켜 나온 PID로 부터 실행 파일 PATH를 루비로 받아옵니다. 여기서 PATH는 CP949로 인코딩된 문자열인데 루비가 처음 스트링으로 인식할 때 UTF-8로 인식하여 문제가 일어나는것 같습니다. 저는 이 문자열을 정말 UTF-8로 인코딩한 후 file read를 해야합니다.

파이썬 코드로 해야 하는 작업을 표현하면 다음과 같습니다.

>>> a = '\xc5\xd7\xbd\xba\xc6\xae'
>>> a.decode('cp949').encode('utf-8')
'\xed\x85\x8c\xec\x8a\xa4\xed\x8a\xb8'

이거 루비로 하는법 아시는분 조언주시면 너무 감사드리겠습니다

익명 사용자의 이미지

깔린 루비가 1.8.7 이시라면 iconv 를 활용합니다.

#!/usr/bin/ruby1.8
# -*- coding: utf-8 -*-
# UTF-8 문자열을 EUC-KR 로 변환하는 예제입니다.
 
require "iconv"
 
u2e = Iconv.new("EUC-KR", "UTF-8")
 
s = u2e.iconv("고맙습니다")
 
puts s # EUC-KR 로 변환된 문자열
익명 사용자의 이미지

답변 감사드립니다.
조금 더 분석을 해보니 처음 path를 받아오니 ASCII-8BIT로 인식하고 있었더라구요
어제 제가 문제를 잘못 인식하고 있었습니다.
path.force_encoding('cp949').encode('utf-8')로 해결헸습니다.