=================================
=================================
=================================
인코딩에 따른 문자열의 바이트 크기 구하는 방법
//기본 인코딩 설정이 UTF-8 로 되어 있다는 가정하에.
String str = "가나다";
int byteCnt = 0;
byteCnt = str.getBytes().length;
byteCnt 의 값은 유니코드[utf-8] 크기에 따라 한글 한글자당 3바이트씩 나온다.
그런데 자신이 서버나 다른 정보 저장 매체의 인코딩에 따라 문자열을 보내야하고 그 인코딩된 문자열의 사이즈 크기를 알고 싶다 그러면.
[예 "euc-kr"]
String str = "가나다";
int byteCnt = 0;
byteCnt = str.getBytes("euc-kr").length;
byteCnt 의 값은 "euc-kr" 크기에 따라 한글 한글자당 2바이트씩 나온다.
=================================
=================================
=================================
인코딩에 따른 문자열의 바이트 복사
String en = "euc-kr"; //utf-8, "MS949" 등등 넣어준다
String str = "가나다";
int siz = str.getBytes(en).length;
byte[] buff = new byte[siz];
System.arraycopy( str.getBytes(en) ,0 ,buff ,0 ,siz);
=================================
=================================
=================================
출처: http://photoress.tistory.com/56
=================================
=================================
=================================
출처: http://ecogeo.tistory.com/295
import android.text.InputFilter;import android.text.Spanned;/*** EditText 등의 필드에 텍스트 입력/수정시* 입력문자열의 바이트 길이를 체크하여 입력을 제한하는 필터.**/public class ByteLengthFilter implements InputFilter {private String mCharset; //인코딩 문자셋protected int mMaxByte; // 입력가능한 최대 바이트 길이public ByteLengthFilter(int maxbyte, String charset) {this.mMaxByte = maxbyte;this.mCharset = charset;}/*** 이 메소드는 입력/삭제 및 붙여넣기/잘라내기할 때마다 실행된다.** - source : 새로 입력/붙여넣기 되는 문자열(삭제/잘라내기 시에는 "")* - dest : 변경 전 원래 문자열*/public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart,int dend) {// 변경 후 예상되는 문자열String expected = new String();expected += dest.subSequence(0, dstart);expected += source.subSequence(start, end);expected += dest.subSequence(dend, dest.length());int keep = calculateMaxLength(expected) - (dest.length() - (dend - dstart));if (keep <= 0) {return ""; // source 입력 불가(원래 문자열 변경 없음)} else if (keep >= end - start) {return null; // keep original. source 그대로 허용} else {return source.subSequence(start, start + keep); // source중 일부만 입력 허용}}/*** 입력가능한 최대 문자 길이(최대 바이트 길이와 다름!).*/protected int calculateMaxLength(String expected) {return mMaxByte - (getByteLength(expected) - expected.length());}/*** 문자열의 바이트 길이.* 인코딩 문자셋에 따라 바이트 길이 달라짐.* @param str* @return*/private int getByteLength(String str) {try {return str.getBytes(mCharset).length;} catch (UnsupportedEncodingException e) {//e.printStackTrace();}return 0;}}
int maxByte = ...;EditText editText = ...;InputFilter[] filters = new InputFilter[] {new ByteLengthFilter(maxByte, "KSC5601")};editText.setFilters(filters);
=================================
=================================
=================================
'프로그래밍 관련 > 언어들의 코딩들 C++ JAVA C# 등..' 카테고리의 다른 글
자바 GUI 툴 google 에서 만든 자바 gui 툴 WindowBuilder 관련 (0) | 2016.05.06 |
---|---|
자바, 안드로이드 java android URL주소 영문이외의 한글이나 일본어 문자열이 들어간 주소가 안될때 'UTF-8'로 주소를 인코딩하여 읽을수 있게 해결하기 관련 (0) | 2015.11.18 |
자바 스레드 관련 (0) | 2015.08.26 |
[JAVA] 실행파일 만들기. exe 파일 만들기 등등 (0) | 2015.08.17 |
java 프레임, JPanel 패널에 백그라운드에 이미지설정 또는 투명값 설정 관련 (0) | 2015.03.09 |
댓글 영역