2016. 11. 24. 16:14ㆍlanguage/java
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
|
원하는 결과를 도출한것 같다.
'language > java' 카테고리의 다른 글
Java | Byte 배열과 바이너리 String 문자열 간의 상호 변환 (0) | 2017.01.19 |
---|---|
Java C Socket 통신, 파일전송 / C : Server / Java : Client (7) | 2017.01.18 |
JAVA 다중 for문 수행횟수에 따른 속도 차이 실험 (0) | 2017.01.04 |
Java를 이용하여 페이지 정보 가져오기(IP, Header, 페이지정보 등) (0) | 2016.12.29 |
Java 랜덤 문자열 생성 / Random 클래스 / 랜덤 숫자 / 난수 (2) | 2016.12.02 |
JAVA Web Crawling (Scraping) / 웹페이지 크롤링 Apache HttpComponents (0) | 2016.11.21 |
JAVA Object 객체가 비어있는지 체크 (0) | 2016.11.11 |
Java 문자열 바이트 체크 / 문자열 길이 체크 / string byte check (1) | 2016.11.11 |
java poi 엑셀 업로드 excel upload 심플한 방법 (2) | 2016.11.11 |
JAVA 강좌 / JAVA 복습 / JAVA 학습 / (0) | 2016.11.08 |