2026, 새로운 도약을 시작합니다.

Byte수가 틀린것 같습니다. 채택완료

문자메세지를 보내기 위해 아래와 같은 소스를 사용하였습니다.

그런데 바이트수가 틀린것 같습니다.

예를들어 "수"자를 쓰면 2바이트가 맞는것 같은데 3바이트라고 찍힙니다.

바이트수를 제대로 나타낼 수 있도록 도와주세요

Copy


        

0byte / 2000byte

      

                                    

                                 function getByteLength(str) {

            let byteLength = 0;

            for (let i = 0; i  str.length; i++) {

                const charCode = str.charCodeAt(i);

                if (charCode  2000) {

                    trimmedContent = trimmedContent.substring(0, trimmedContent.length - 1);

                }

                $(this).val(trimmedContent);

                $('.text_box2 .count span').html(getByteLength(trimmedContent));

            }

        });

                                    

            

 

답변 3개

채택된 답변
+20 포인트
Copy




  0byte / 2000byte

  





function getByteLength(str) {

  let byte = 0;

  for (let i = 0; i  str.length; i++) {

    // 한글 체크: AC00(가)~D7AF(힣) 범위에 있는 문자

    if (str.charCodeAt(i) >= 0xAC00 && str.charCodeAt(i)  2000) {

    alert("최대 2000바이트까지 입력 가능합니다.");

    let trimmedContent = content;

    while (getByteLength(trimmedContent) > 2000) {

      trimmedContent = trimmedContent.slice(0, -1);

    }

    $(this).val(trimmedContent);

    $('.text_box2 .count span').text(getByteLength(trimmedContent));

  }

});



로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

찾아보니 euc-kr은 한글이 2byte로 인코딩되는데 utf-8은 3byte로 인코딩 된다네요.
그러므로 위의 소스가 맞습니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

보통 한글은

utf-8에선 3바이트로 계산하시면 됩니다.

euc-kr로 작업시에는 2바이트로 계산되는것으로 알고있어요.

요새는 대부분 utf-8로 작업하니 현 작업파일은 utf-8이 아닐까 합니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고