모든 프로젝트가 그렇겠지만
한글 전용으로만 사용하는 경우 이런저런 문제가 발생하곤 한다
나 같은 경우 jsp css java 등 모든 소스부터 euc-kr 혹은 iso_8859_1 로 변경하고
개발하곤 했다. 속편하니까....
근데 한글 전용으로 하면 은근 꺠지는 문자도 많고
한문이나 중문등 표현되지 않는 부분이 많다보니
신경쓰인다
게다가 요즘은 대부분 다 UTF-8로 개발을 하다보니
여러 프로젝트를 진행하는 경우
이클립스 워크스페이스를 따로 두어서 운영하든지 해야 한다.
싫다 ㅡㅡ
이번에 진행하는 프로젝트는
Sybase 를 데이타베이스로 사용한다
당연히 charset을 UTF-8로 요청했는데 안된단다.
원래 쓰고 있던거라 eucksc 로 써야 한단다.
이런 ㅡㅡ....
그래서 내 프레임에 넣고 돌려보니 당연히 한글이 안된다.
내 프레임은 전부다 UTF-8이다보니 한글 깨짐이야 당연 ~~~~~~~
한글은 2바이트고 UTF-8은 3 바이트니 안되는게 당연 ㅡㅡ...
그렇다고 워크스페이스를 따로 두고 운영하거나
프레임을 EUC-KR로 변경하면 프레임을 구분하여 운영해야 하니
이또한 선택사항이 아니다.
그래서 생각한게 모든 환경은 UTF-8로 처리하고
실제 DB 처리시만 EUC-KR로 변환해서 처리하도록 하는 것이다
남들 다 그렇게 한다고 ? 몰라.. 그런지..
하튼 처리했고
결론은 이거다 .....
sqlSessiontemplate를 override 했다.
insert,update,list,view 시
[-----------------------------------------------------------]
private <T> T check( Object oo){
if (oo == null) {
return (T)oo;
}
if (this.dbctype == null) {
this.dbctype = ImsProperty.getInstance().getProperty("CHARACTER.DB.TYPE");
}
if ("EUC-KR".equals(this.dbctype)) {
if ("java.util.HashMap".equals(oo.getClass().getTypeName())) {
String sval = "";
HashMap<String,Object> o = (HashMap<String,Object>)oo;
for(String key : o.keySet()) {
if (o.get(key) != null && "java.lang.String".equals(o.get(key).getClass().getTypeName())) {
sval = (String)o.get(key);
try {
o.put(key, new String(sval.getBytes("8859_1"),"EUC-KR"));
} catch (UnsupportedEncodingException e) {
}
}
}
return (T)o;
} else if ("java.lang.String".equals(oo.getClass().getTypeName())) {
String o = (String)oo;
try {
o = new String(o.getBytes("8859_1"),"EUC-KR");
} catch (UnsupportedEncodingException e) {
}
return (T)o;
}
}
return (T)oo;
}
위와 같이 (물론 세부사항은 틀리지만, 나머지 미진한 부분은 공부하거나 필요시 요청하시길 )
해서 스트링에 대해 한번더 값을 변경해 주었다
핵심은 이거다
insert, update 시에는
r = new String(r.getBytes("EUC_KR"), StandardCharsets.ISO_8859_1 );
와 같이 변경해주고
읽어올떄는
new String(sval.getBytes("8859_1"),"EUC-KR"))
와 같이 변경해주는 거다.
물론.. 속도는 떨어진다....
하지만 UTF-8로 모든 환경을 사용하면서
데이타베이스는 EUC-KR로 유지하면서
완전하게 동작하는것에 위안을 삼는다.
이건 UTF-8 개발환경에서 어떤 charset으로 DB를 작동하든
다 동작할테니까.....
하튼 제발 글로벌하게 DB는 UTF-8로 쓰는걸루 하자... Please....
'IT' 카테고리의 다른 글
자바스크립트 eventbind, eventunbind 에 function 사용 (0) | 2022.06.10 |
---|---|
mybatis foreach sybase (0) | 2022.05.27 |
스프링 페이징 처리.. (0) | 2022.03.17 |
전자정부프레임웍 ,, log4j 보안이슈 (0) | 2021.12.17 |
[웹폰트] 웹폰트 로딩 속도 빠르게 하기 (0) | 2021.11.20 |