CUBRID 프로시저 한글 문제

by 테르 posted Sep 25, 2014

* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
OS
Window7 64bit
CUBRID Ver.
CUBRID 9.3 (9.3.0.0206) (64bit release build for Windows_NT)
CUBRID TOOL Ver.
CUBRID Query Browser 2014.03 빌드 0458  (64bit)
응용 환경(API)
java

* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------

안녕하세요 java 프로시저 생성 후 한글 문제 때문에 문의 드립니다.


1. java source

public class EncodeUTF8 {
 /**
  * 문자열을 UTF-8로 인코딩 한다.
  * @param param 인코딩 할 문자열
  * @return
  */
 public static String Encode(String param) {
  try {
   return URLEncoder.encode(param, "UTF-8");
  } catch(Exception e) {
   return param;
  }
 }
}


2. 프로시저 생성(경로는xxx로 변경하겠습니다.)

CREATE FUNCTION
 encode(param STRING)RETURN STRING
AS LANGUAGE JAVA
NAME 'xxx.xxxx.xxxx.EncodeUTF8.Encode(java.lang.String) return java.lang.String'


3. 테스트 실행

SQL : SELECT ENCODE('한글.jpg') FROM DB_ROOT

결과 : %EF%BF%BD%EC%92%93%EF%BF%BD.jpg


한글.jpg 를 java 직접실행과 cubrid 함수 호출 결과가 다르게 나옵니다.

java 직접 실행 결과 : %ED%95%9C%EA%B8%80.jpg

cubrid 호출 결과 : %EF%BF%BD%EC%92%93%EF%BF%BD.jpg


위 값을 다시 디코딩하여 복호화해보니 다음 결과가 나옵니다.

java 직접 실행 결과 : 한글.jpg

cubrid 호출 결과 : �쒓�.jpg


확인 좀 부탁 드리겠습니다.





Articles