Java | queryString 등 문자열 중에서 한글만 찾아 인코딩하기 / 유니코드 활용
Java | 문자열(URL, QueryString 등) 중에서 한글만 찾아 인코딩하기
Java에서 특정 문자열 중 한글만 골라 인코딩 해야할 경우가 있다.
예를 들면
웹프로젝트를 진행중에 한글이 깨지는 경우들이 있다.
controller 에서 redirect 를 할 때 url 또는 queryString 에 한글이 표함되어 있을 수 있다.
이때 한글을 전송하면 공백(%20)으로 치환되거나 이상한 특수문자로 깨지는 경우가있다.
또는 페이지 이동 등 전송 중에 parameter 에 한글이 있는 경우 한글이 깨지는 경우가 있다.
문자열에 특정 규칙이 존재한다면 String 함수들로도 충분히 변환이 가능하다.
하지만 불규칙하게 한글이 섞여 있는 경우에는 다른 방법을 찾아봐야 한다.
고민하던 중 문자열 중에서 한글만 찾아낸 뒤 찾은 한글만 인코딩하면 될거같다는 생각이 들었다.
1
2
3
4
5
6
7
8
9
10
11
12 |
String txt = "http://cofs.tistory.com?param1=a123¶m2=한글¶m3=개발자¶m4=cofs";
char[] txtChar = txt.toCharArray();
for (int j = 0; j < txtChar.length; j++) {
if (txtChar[j] >= '\uAC00' && txtChar[j] <= '\uD7A3') {
String targetText = String.valueOf(txtChar[j]);
try {
txt = txt.replace(targetText, URLEncoder.encode(targetText, "euc-kr"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
} |
cs |
1# : 한글이 섞여있는 URL
2# : 케릭터 타입 배열로 변환
3# : 배열만큼 루프
4# : 유니코드 한글 음절 uAC00부터 uD7A3 까지 체크
7# : 한글을 인코딩한 문자로 replace 함
txt 변수의 값 http://cofs.tistory.com?param1=a123¶m2=한글¶m3=개발자¶m4=cofs
txt 변수의 결과값 http://cofs.tistory.com?param1=a123¶m2=%C7%D1%B1%DB¶m3=%B0%B3%B9%DF%C0%DA¶m4=cofs
|
원하는 결과를 도출한것 같다.