[Java] 문자열 바이트로 자르기
2019. 1. 29. 09:07
반응형
[Java] 문자열 바이트로 자르기
보통 문자열 자르기 사용시에
영문 같은 경우는 문제가 되지않으나
한글 같은 경우에 종종 바이트 수 문제가 발생 할 경우가 있다.
필자같은 경우 SMS 보내기를 진행하였을때 SMS의 바이트 수제한을 주기위해
글자수로만 인식하던 방법을 다음과 같은 바이트수로 계산하여 사용하였다.
▼바이트수 자르기 코드 예)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | public String getString(String str, int sPoint, int length) throws Exception{ String EncodingLang = "euc-kr"; byte[] bytes = str.getBytes("euc-kr"); byte[] value = new byte[length]; if(bytes.length < sPoint + length){ throw new Exception("Length of bytes is less. length : " + bytes.length + " sPoint : " + sPoint + " length : " + length); } for(int i = 0; i < length; i++){ value[i] = bytes[sPoint + i]; } /* 인코딩 EX) System.out.println("utf-8 -> euc-kr : " + new String(word.getBytes("utf-8"), "euc-kr")); System.out.println("utf-8 -> ksc5601 : " + new String(word.getBytes("utf-8"), "ksc5601")); System.out.println("utf-8 -> x-windows-949 : " + new String(word.getBytes("utf-8"), "x-windows-949")); System.out.println("utf-8 -> iso-8859-1 : " + new String(word.getBytes("utf-8"), "iso-8859-1")); System.out.println("iso-8859-1 -> euc-kr : " + new String(word.getBytes("iso-8859-1"), "euc-kr")); System.out.println("iso-8859-1 -> ksc5601 : " + new String(word.getBytes("iso-8859-1"), "ksc5601")); System.out.println("iso-8859-1 -> x-windows-949 : " + new String(word.getBytes("iso-8859-1"), "x-windows-949")); System.out.println("iso-8859-1 -> utf-8 : " + new String(word.getBytes("iso-8859-1"), "utf-8")); System.out.println("euc-kr -> utf-8 : " + new String(word.getBytes("euc-kr"), "utf-8")); System.out.println("euc-kr -> ksc5601 : " + new String(word.getBytes("euc-kr"), "ksc5601")); System.out.println("euc-kr -> x-windows-949 : " + new String(word.getBytes("euc-kr"), "x-windows-949")); System.out.println("euc-kr -> iso-8859-1 : " + new String(word.getBytes("euc-kr"), "iso-8859-1")); System.out.println("ksc5601 -> euc-kr : " + new String(word.getBytes("ksc5601"), "euc-kr")); System.out.println("ksc5601 -> utf-8 : " + new String(word.getBytes("ksc5601"), "utf-8")); System.out.println("ksc5601 -> x-windows-949 : " + new String(word.getBytes("ksc5601"), "x-windows-949")); System.out.println("ksc5601 -> iso-8859-1 : " + new String(word.getBytes("ksc5601"), "iso-8859-1")); System.out.println("x-windows-949 -> euc-kr : " + new String(word.getBytes("x-windows-949"), "euc-kr")); System.out.println("x-windows-949 -> utf-8 : " + new String(word.getBytes("x-windows-949"), "utf-8")); System.out.println("x-windows-949 -> ksc5601 : " + new String(word.getBytes("x-windows-949"), "ksc5601")); System.out.println("x-windows-949 -> iso-8859-1 : " + new String(word.getBytes("x-windows-949"), "iso-8859-1"));*/ return new String(value, EncodingLang).trim(); } | cs |
반응형
'Program > Java' 카테고리의 다른 글
[Java] String을 Json 객체로 변경하는법 (0) | 2019.02.26 |
---|---|
[Java] HashMap 정리 (0) | 2019.01.31 |
[JAVA] 배열 선언 및 랜덤 함수 활용 (0) | 2018.03.05 |
[Spring] Spring Security로 사용자 정보 찾기 (0) | 2017.11.09 |
HTML PAGING CSS (페이징 CSS) (0) | 2017.08.22 |