안드로이드 개발 질문/답변
(글 수 45,052)
EditText에 입력받은(한글과 영문)문자들을 20바이트까지 제한해서 더이상 입력을 못받게 하고싶습니다.
한글은 한글자에 2바이트고 영문은 한글자에 1바이트로 구분하는거 까지는 했고 ...
검색해서 나온 밑에 소스로 ...
InputFilter[] FilterArray;
FilterArray = new InputFilter[1];
FilterArray[0] = new InputFilter.LengthFilter(20);
editText.setFilters(FilterArray);
editText의 글자수 제한은 됩니다.... 영문일 경우만 ;;;;;
한글로 인풋할 경우는 40바이트까지 되더군요 ...
여기서 한글 , 영문 둘 다 제한할려면 입력받은 문자가 한글인지 영문인지 구분만 해주면 어떻게 될듯한데요 ...
어떻게 구분하나요 ...?
한글은 한글자에 2바이트고 영문은 한글자에 1바이트로 구분하는거 까지는 했고 ...
검색해서 나온 밑에 소스로 ...
InputFilter[] FilterArray;
FilterArray = new InputFilter[1];
FilterArray[0] = new InputFilter.LengthFilter(20);
editText.setFilters(FilterArray);
editText의 글자수 제한은 됩니다.... 영문일 경우만 ;;;;;
한글로 인풋할 경우는 40바이트까지 되더군요 ...
여기서 한글 , 영문 둘 다 제한할려면 입력받은 문자가 한글인지 영문인지 구분만 해주면 어떻게 될듯한데요 ...
어떻게 구분하나요 ...?
^^




케릭터셋 MS949는 영문 1바이트 한글 2바이트로 변환되어 나옵니다.
이 방법은 사용자의 입력을 후처리해서 잘라내거나 벨리데이션 할때 유용한 방법이고요.
원하시는것 처럼 사용자의 입력 전에 입력 필드에 길이 제한을 두고자 할때는 한글 길이 기준으로 제한하는게 안전합니다.
레거시 시스템과의 자료 교환 목적이 아닌 이상 유니코드 케릭터 셋을 이용해 저장해도 좋습니다.
유니코드 케릭터 셋을 이용하면 영문/한글 및 기타 외국어도 동일한 길이를 차지하며, 다국어간 혼용도 가능하므로 국제화를 고려한다면 유니코드 이용하는것이 좋습니다.(UTF-16 : 3바이트)