>  기사  >  웹 프론트엔드  >  JavaScript에서 문자열을 UTF-8 형식으로 변환하는 방법

JavaScript에서 문자열을 UTF-8 형식으로 변환하는 방법

PHPz
PHPz원래의
2023-04-05 14:37:105116검색

일상적인 개발에서는 문자열을 UTF-8 형식으로 변환해야 하는 경우가 많습니다. 왜냐하면 UTF-8은 중국어, 일본어, 한국어 등을 포함한 다국어 문자를 지원하는 범용 문자 인코딩 방법이기 때문입니다. JavaScript는 이러한 변환 프로세스를 달성하는 데 도움이 될 수 있는 일반적으로 사용되는 스크립팅 언어입니다.

이 글에서는 다음 측면에서 JavaScript에서 문자열을 UTF-8 형식으로 변환하는 방법을 소개합니다.

  1. UTF-8 인코딩 방법 이해
  2. 문자열을 UTF-8로 빠르게 변환
  3. 완전한 UTF-8 트랜스코딩 방식
  4. UTF-8 인코딩 방법 이해

UTF-8은 가변 길이 문자 인코딩입니다. 인코딩 규칙은 다음과 같습니다.

  • 싱글바이트 문자의 경우 바이트의 첫 번째 숫자는 0으로 설정되고 다음 숫자는 7로 설정됩니다. 비트는 이 문자의 유니코드 코드입니다.
  • 다중 바이트 문자의 경우 첫 번째 바이트의 처음 n 비트는 모두 1이고 n+1번째 비트는 0이며 다음 바이트의 처음 2비트는 모두 다음으로 설정됩니다. 0. 10이고 나머지 6비트는 문자의 유니코드 코드입니다.

예를 들어 한자 "you"의 유니코드 코드는 "U+4F60"입니다. 위 규칙에 따르면 UTF-8 인코딩으로 변환한 후에는 "E4 BD A0"이 되어야 합니다.

  1. 문자열을 UTF-8로 빠르게 변환

JavaScript에서는 인코딩 및 디코딩 기능을 통해 문자열을 UTF-8 형식으로 쉽게 변환할 수 있습니다.

첫 번째는 인코딩 함수입니다. encodeURIComponent() 함수를 사용하여 문자열을 URI 인코딩 형식으로 변환한 다음 각 문자의 URI 인코딩을 UTF-8 형식의 최종 문자열로 연결할 수 있습니다.

function utf8Encode(str) {
  let encodedStr = encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (match, p1) => {
    return String.fromCharCode(parseInt(p1, 16));
  });

  let utf8Str = "";
  for (let i = 0; i < encodedStr.length; i++) {
    let charCode = encodedStr.charCodeAt(i);
    if (charCode < 128) {
      utf8Str += String.fromCharCode(charCode);
    } else if (charCode < 2048) {
      utf8Str += String.fromCharCode((charCode >> 6) | 192);
      utf8Str += String.fromCharCode((charCode & 63) | 128);
    } else {
      utf8Str += String.fromCharCode((charCode >> 12) | 224);
      utf8Str += String.fromCharCode(((charCode >> 6) & 63) | 128);
      utf8Str += String.fromCharCode((charCode & 63) | 128);
    }
  }

  return utf8Str;
}

그 중 encodeURIComponent() 함수는 문자열을 URI 인코딩으로 변환하는 데 사용되고, replacement() 함수는 각 문자의 URI 인코딩을 UTF-8 형식의 최종 문자열로 접합하는 데 사용됩니다.

디코딩 함수는 decodeURIComponent() 함수를 사용하여 인코딩된 문자열을 디코딩합니다. 샘플 코드는 다음과 같습니다.

function utf8Decode(utf8Str) {
  let decodedStr = "";
  let i = 0;

  while (i < utf8Str.length) {
    let charCode = utf8Str.charCodeAt(i);
    if (charCode < 128) {
      decodedStr += String.fromCharCode(charCode);
      i++;
    } else if (charCode >= 192 && charCode < 224) {
      decodedStr += String.fromCharCode(((charCode & 31) << 6) | (utf8Str.charCodeAt(i + 1) & 63));
      i += 2;
    } else {
      decodedStr += String.fromCharCode(((charCode & 15) << 12) | ((utf8Str.charCodeAt(i + 1) & 63) << 6) | (utf8Str.charCodeAt(i + 2) & 63));
      i += 3;
    }
  }

  return decodeURIComponent(decodedStr);
}
  1. 완전한 UTF-8 트랜스코딩 솔루션

위 함수는 문자열을 UTF-8 형식으로 변환할 수 있지만, 하지만 이 방법은 전체 웹 애플리케이션에서 문자열을 트랜스코딩해야 하는 경우에는 그다지 실용적이지 않습니다. 이때 iconv-lite와 같은 타사 라이브러리를 사용하여 전체 애플리케이션의 트랜스코딩 작업을 완료할 수 있습니다. 샘플 코드는 다음과 같습니다.

const iconv = require("iconv-lite");

let utf8Str = "欢迎使用 iconv-lite 库";

let buf = iconv.encode(utf8Str, "utf8"); // 转成 UTF-8 Buffer
let gbkStr = iconv.decode(buf, "gbk"); // 转成 GBK 编码字符串

위 코드에서는 iconv.encode( ) 함수를 사용하여 문자열을 UTF-8 인코딩된 버퍼로 변환한 다음 iconv.decode() 함수를 사용하여 버퍼를 해당 인코딩된 문자열로 변환합니다. iconv-lite 라이브러리를 사용하려면 먼저 npm을 통해 설치해야 합니다. 설치 방법은 다음과 같습니다.

npm install iconv-lite

Summary

이 글에서는 JavaScript에서 문자열을 UTF-8 형식으로 변환하는 방법을 소개합니다. UTF-8 인코딩 방법에 대해 알아보고, 인코딩 및 디코딩 기능을 통해 문자열을 UTF-8로 변환하는 간단한 방법을 구현했으며, iconv-lite 라이브러리를 사용하여 전체 애플리케이션의 트랜스코딩 작업을 완료하는 방법을 소개했습니다. 실제 개발에서는 실제 필요에 따라 적절한 방법을 선택하면 개발 비용을 절감하고 작업 효율성을 높일 수 있습니다.

위 내용은 JavaScript에서 문자열을 UTF-8 형식으로 변환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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