2023.01.27(TIL)

SaGo_MunGcci·2023년 1월 27일
0

업무 프로젝트

목록 보기
12/29

C# 바이트 계산하는 법
https://holjjack.tistory.com/145


// 의심질환 (청구용)
            aMemoEdit1.EditValueChanged += (sender, e) =>
            {               
                int messageSize = Encoding.UTF8.GetBytes(aMemoEdit1.Text).Length;
                aLabelControl72.Text = messageSize.ToString();

                if (messageSize > 500)
                {
                    AMessageBox.ShowInstant("입력데이터는 500바이트를 초과할 수 없습니다.");
                    Byte[] bt = Encoding.UTF8.GetBytes(aMemoEdit1.Text);
                    aMemoEdit1.Text = Encoding.UTF8.GetString(bt, 0, 498);
                    aLabelControl72.Focus();
                    SuspecDisease.Focus();
                    aLabelControl72.Text = messageSize.ToString();
                }
            };

나는 default가 유니코드로 잡혀있는 것같아서 한글이 2byte로 잡혔다.

따라서 UTF8로 잡아주니까 한글이 3바이트로 잡힘.

왜 한글이 3byte로 잡혔나?

오라클 때문이다. 오라클에서 캐릭터 셋에 따라서 한글이 3바이트로 잡힌다.

오라클 한글 바이트 정리
https://emunhi.com/view/201807/25144849338?menuNo=10012

업무하다가 놓친 것들
판정용과 청구용이 있었는데, 판정용은 의사선생님들이 판정문을 다 적으시면 청구용에서 다듬어서 결과지에 출력이 되는 프로세스를 가지고 있었다. 그러나 나는 판정용에도 위와 같이 바이트수를 제한하여 결과적으로 판정용을 제대로 기입하지 못하게 했다.

profile
이리저리 생각만 많은 사고뭉치입니다.

0개의 댓글