* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
Window7 64bit | |
CUBRID 9.3 (9.3.0.0206) (64bit release build for Windows_NT) | |
CUBRID Query Browser 2014.03 빌드 0458 (64bit) | |
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
확인 좀 부탁 드리겠습니다.
안녕하세요.
답변이 늦어 죄송합니다.
사내에서 말씀해 주신 방법으로 확인한 결과, encode 함수 수행 시, '%ED%95%9C%EA%B8%80.jpg'으로 출력되며, 해당 데이터를 Decode하는 경우, '한글.jpg'로 정상 출력됩니다.
저의 경우, DB 생성 시, DB 문자 셋을 UTF8로 생성하였는데, 동일하게 생성하셨는지 확인 부탁 드립니다.
참고로, 위 내용은 모두 csql을 이용하여 확인하였습니다.
감사합니다.