관리 메뉴

구시렁 구시렁

jython 문자열 과 java 문자열 본문

tool for tools

jython 문자열 과 java 문자열

옥탑방청년 2010.01.07 20:13

요즘 본격적으로 hbase, mapreduce 로 프로젝트를 수행중인데, 일부 프로그램은 python 스크립트로 짜서 소스를 그때 그때 수정할 수 있게 해야 하는 것이 생겼다. 이렇다 보니 jython을 사용하게 되었는데, 이거 우습게 봤다가 아주 낭패를 봤다. python 과 java 사이의 glue 역할을 하는 부분을 잘 모르니 java 와 jython 간의 내부 문자열 변환에서 상당히 애를 먹었다.

일단 jython의 기본 문자열은 python의 str 타입이다. java 는 당연히 java.lang.String 이고.

문제는 HBase 관련 api 를 호출하게 되면 이 녀석들의 반환 값이 byte[] 인 것이다. 요걸 jython 에서 사용하려면 일단 java.lang.String 으로 바꾼다.


import sys

import java.lang.String

:

value_from_hbase = some_function_using_hbase_api()

test = java.lang.String(value_from_hbase, encoding_of_byte_array)

print test

byte[] 형인 value_from_hbase 를 encoding_of_byte_array 인코딩으로 java.lang.String 객체를 만들었다. 여기까진 좋다.

요걸 그대로 print test 를 하면 한글이 깨져 출력된다.

한 단계를 더 거치도록 한다.


import sys

import java.lang.String

from org.python.core import PyString

:

value_from_hbase = some_function_using_hbase_api()

test = java.lang.String(value_from_hbase, encoding_of_byte_array)

test = PyString(test).encode(encoding_of_byte_array)

print test

이제 한글이 제대로 찍힐 것이다.


'tool for tools' 카테고리의 다른 글

samba symbolic link  (1) 2010.08.31
타임캡슐 대용 리눅스 삼바 볼륨  (0) 2010.08.15
jython 문자열 과 java 문자열  (0) 2010.01.07
CLASSPATH, HADOOP_CLASSPATH  (0) 2009.11.20
subversive URL 입력 창 비활성화 문제  (0) 2009.11.18
trac with wsgi on ubuntu  (0) 2009.11.04
0 Comments
댓글쓰기 폼