http://blog.naver.com/gh2501/119067204UTF-8은 유니코드의 가변 폭 인코딩 기법으로 캐릭터 셋에 따라 1바이트에서
4바이트까지 폭이 변동하며, 첫 번째 바이트를 읽는 것만으로 몇 개의 바이트로 구성된
것인지 알 수 있기 때문에 상당히 정교하다.
하위 16비트만 표현할 때는 최대 3개 바이트로 충분하다. UTF-8에서 상위 아스키코드
영역은 1바이트로 표현될수 있고 한글은 대개 3바이트를 차지한다.
자바는 UCS-2(UTF-16)을 기본 인코딩으로 사용하고 있기 때문에 String.length() 를 통해
얻은 문자열의 길이와 UTF-8을 사용하는 데이터베이스에 저장했을 때의 길이가 달라진다.
이를 해결하기 위해 UTF-8인코딩시 바이트 수를 계산해주는 공통 함수를 정의하여
데이터베이스에 저장될 최대 문자수를 계산하도록 한다.
다음은 UTF-8인코딩 시의 바이트수를 계산하는 함수예제이다.
public class UTF8Count {
public static void main(String args[]){
System.out.println(getUTF8Count("바이트"));
System.out.println(getUTF8Count("byte"));
}
public static int getUTF8Count(String s){
return getUTF8Count(s.toCharArray());
}
protected static int getUTF8Count(char[] c){
int len=c.length;
int count=0;
for(int i=0;i<len;i++){
int ch=c[i];
if(ch<=0x7f){
count++;
}else if(ch<=0x7ff){
count+=2;
}else{
count+=3;
}
}
return count;
}
}
실행 결과
9
4
UTF-8 인코딩시 영문은 1바이트, 한글은 3바이트를 차지하기 때문에 각각 9와 4
가 찍히게 된다
[출처] UTF-8 인코딩시의 바이트 수를 계산하는 함수|작성자 실바
4바이트까지 폭이 변동하며, 첫 번째 바이트를 읽는 것만으로 몇 개의 바이트로 구성된
것인지 알 수 있기 때문에 상당히 정교하다.
하위 16비트만 표현할 때는 최대 3개 바이트로 충분하다. UTF-8에서 상위 아스키코드
영역은 1바이트로 표현될수 있고 한글은 대개 3바이트를 차지한다.
자바는 UCS-2(UTF-16)을 기본 인코딩으로 사용하고 있기 때문에 String.length() 를 통해
얻은 문자열의 길이와 UTF-8을 사용하는 데이터베이스에 저장했을 때의 길이가 달라진다.
이를 해결하기 위해 UTF-8인코딩시 바이트 수를 계산해주는 공통 함수를 정의하여
데이터베이스에 저장될 최대 문자수를 계산하도록 한다.
다음은 UTF-8인코딩 시의 바이트수를 계산하는 함수예제이다.
public class UTF8Count {
public static void main(String args[]){
System.out.println(getUTF8Count("바이트"));
System.out.println(getUTF8Count("byte"));
}
public static int getUTF8Count(String s){
return getUTF8Count(s.toCharArray());
}
protected static int getUTF8Count(char[] c){
int len=c.length;
int count=0;
for(int i=0;i<len;i++){
int ch=c[i];
if(ch<=0x7f){
count++;
}else if(ch<=0x7ff){
count+=2;
}else{
count+=3;
}
}
return count;
}
}
실행 결과
9
4
UTF-8 인코딩시 영문은 1바이트, 한글은 3바이트를 차지하기 때문에 각각 9와 4
가 찍히게 된다
[출처] UTF-8 인코딩시의 바이트 수를 계산하는 함수|작성자 실바
댓글 0
- 전체
- Android+iPhone+etc.
- Apache+Tomcat
- ASP
- ASP.NET
- DataBase
- HTML / CSS
- JavaScript
- JSP
- Linux Server
- PHP
- Raspberry pi
- Windows Server
- WIPI
- Etc.
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
» | UTF-8 인코딩시의 바이트 수를 계산하는 함수 | taknim | 2012.05.08 | 8421 |
9 | 오라클에서 varchar2(4000) 데이타 넣기 | taknim | 2008.11.25 | 9644 |
8 | 리눅스에서 자바 한글 폰트 설정 | taknim | 2008.03.20 | 8769 |
7 | 쿼리문에서 데이터 길이 초과시 Stream 방식 사용 | taknim | 2007.06.21 | 8192 |
6 | 이미지 생성 (이미지에 글자 입력) | taknim | 2006.12.13 | 9635 |
5 | JSP 날짜 연산법 | taknim | 2006.04.10 | 13372 |
4 |
MySQL 연결할때 캐릭터셋을 변경해줘야 할 경우
![]() | taknim | 2005.11.26 | 8034 |
3 | 내부 객체와 액션 태그 | taknim | 2005.10.26 | 8231 |
2 | 한글로 입력받은 값이 깨질 때(문자열 EUC-KR로 변환) | taknim | 2005.10.25 | 9666 |
1 | 윈도우에서 이클립스의 jsp 환경구축 | taknim | 2005.09.30 | 7783 |