>  기사  >  웹 프론트엔드  >  JavaScript를 사용하여 UTF-8_javascript 기술에 문자열을 저장하여 차지하는 바이트 수를 계산합니다.

JavaScript를 사용하여 UTF-8_javascript 기술에 문자열을 저장하여 차지하는 바이트 수를 계산합니다.

WBOY
WBOY원래의
2016-05-16 17:26:221768검색

나는 최근 JavaScript에 어려움을 겪고 있습니다.

이런 문제가 발생했습니다. 데이터베이스의 문자 집합이 UTF-8입니다. 입력 텍스트가 UTF-8로 저장될 때 바이트 길이를 차지하는지 확인하려면 페이지에서 JavaScript를 사용해야 합니다. JavaScript의 String 객체에는 길이 속성이 있는데 이 계산은 바이트 수가 아닌 문자 수입니다. (문제는 항상 계속해서 발생합니다. 델파이를 가지고 놀 때 프로그램을 작성해야 했던 기억이 납니다. Delphi의 문자열 길이는 바이트 수이기 때문에 문자열의 문자 수를 계산합니다...). 게으른 방법은 인증 코드의 최대 길이를 데이터베이스의 해당 필드 길이의 1/3로 설정하는 것이지만 이는 정확하기에는 다소 부적절합니다.

그래서 JavaScript에서 UTF-8로 저장된 String의 바이트 수를 확인하는 방법을 찾고자 인터넷에서 유니코드 도입에 대한 많은 문서를 찾았습니다. 문자 인코딩 값:

UCS-2 인코딩(16진수) UTF-8 바이트 스트림(2진수)
0000 - 007F 0xxxxxxx(1바이트)
0080 - 07FF 110xxxxx 10xxxxxx(2바이트)
0800 - FFFF 1110xxxx 10xxxxxx 10xxxxxx (3바이트)

따라서 코드는 다음과 같습니다.
[

코드 복사 코드는 다음과 같습니다.

function mbStringLength(s) {
var totalLength = 0
var i
var charCode; 0; i < s.length; i ) {
charCode = s.charCodeAt(i);
if (charCode < 0x007f) {
totalLength = totalLength 1; (0x0080 <= charCode) && (charCode <= 0x07ff)) {
totalLength = 2;
} else if ((0x0800 <= charCode) && (charCode <= 0xffff)) {
totalLength = 3;
}
}
//alert(totalLength);
return totalLength;
}


실제로는 0x0080에서 0x07ff 사이의 문자입니다. 실제로는 거의 사용되지 않으며 사용자 입력에 사용됩니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.