삶의 도움이 되도록 씨부리는거/VB

인코딩 방법을 변경하여 lenb를 대신할 문자열 bytes 획득

2009. 9. 7. 14:47

VB에서는 lenb라는 함수를 이용하여 문자열의 길이를 bytes로 얻을 수 있었다.
그러나 .net으로 넘어오면서 모든 문자열을 unicode로 처리하게 되어 2bytes로 인지하게 되었고 따라서, lenb의 지원이 중단되었다.

이에 2bytes문자와 1byte의 문자를 구별하여 그 길이를 위해 여기저기 뒤져보고 이것저것 해보기도 하였지만, 나의 우매한 지식으로는 도저히 알아낼 수가 없었다.
딴에는 문자열을 bytes로 변환하면 그 값이 나오지 않을까 싶었는데, 아닌가보다. 기본적인 데이터에 대한 이해가 없는 상태에서는 쉽지 않았다.

그러다 devpia에서 우연히 아래의 게시물을 발견하여 그 해법을 찾았다.
(http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=44&MAEULNo=18&no=22085&ref=22085)

안녕하세요.

.net은 기본적으로 모든 문자가 2byte입니다. unicode가 기본이기 때문이지요.

그래서, encoding을 한글로 변경후에 GetByteCount하면 영문과 한글의 byte수가 다르게 나옵니다.

 

        Dim aaa As String = "aaa"

        Dim bbb As String = "질문"

        Dim ccc As String = "aa질문"

 

        MessageBox.Show(System.Text.Encoding.GetEncoding("euc-kr").GetByteCount(aaa))

        MessageBox.Show(System.Text.Encoding.GetEncoding("euc-kr").GetByteCount(bbb))

        MessageBox.Show(System.Text.Encoding.GetEncoding("euc-kr").GetByteCount(ccc))

 

이렇게 하면 aaa는 3, bbb는 4, ccc는 6이 돼겠죠.

그럼.

기본적으로... 유니코드로 되어 있는 문자열을 euc-kr로 다시 인코딩하여 그 크기를 구하는 것이다.
내가 사용하고자 했던 것은 긴 문자열이 아닌 관계로 실시간으로 바꾸어도 큰 문제가 없을 것으로 판단되었다.
따라서 textchanged 이벤트에서 바로바로 변경 bytes 크기를 알아내도록 하였고, 셀렉션이 있을 경우에는 그 크기를 알기 위해 mouseup / keyup 이벤트에도 다음 구문을 추가하였다.

If tbBizContent.SelectionLength > 0 Then
    BizBytes.Text = "길이 : " & System.Text.Encoding.GetEncoding("euc-kr").GetByteCount(tbBizContent.SelectedText)
Else
    BizBytes.Text = "길이 : " & System.Text.Encoding.GetEncoding("euc-kr").GetByteCount(tbBizContent.Text)
End If


별거 아니지만 무척 만족스럽다.
반응형

'삶의 도움이 되도록 씨부리는거 > VB' 카테고리의 다른 글

VB로 웹 submit 처리  (0) 2013.09.02
VB.net에서 웹 컨트롤 로그인 방법..을 알고 싶습니다!!  (0) 2011.12.05
'삶의 도움이 되도록 씨부리는거/VB' 카테고리의 다른 글
  • VB로 웹 submit 처리
  • VB.net에서 웹 컨트롤 로그인 방법..을 알고 싶습니다!!
狂者力 狂獸
狂者力 狂獸
어느 반 미치광이의 푸념이 가득한 곳입니다.
狂者力 狂獸
狂者力 硏究所 狂獸의 β(排他)的 人生
狂者力 狂獸
전체
오늘
어제
  • 전체보기 (558)
    • 에이 몰라 혼자 씨부리는거 (347)
      • 신변 잡기 씨부 (251)
      • 어,그래..씨부(aggressive) (54)
      • 직업 씨부 (27)
      • 감상 씨부 (11)
    • 메신져 (87)
    • 삶의 도움이 되도록 씨부리는거 (23)
      • IT (7)
      • VB (3)
    • 어줍잖은어른들의이야기 (94)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.
狂者力 狂獸
인코딩 방법을 변경하여 lenb를 대신할 문자열 bytes 획득
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.