일상적인 개발에서는 문자열을 UTF-8 형식으로 변환해야 하는 경우가 많습니다. 왜냐하면 UTF-8은 중국어, 일본어, 한국어 등을 포함한 다국어 문자를 지원하는 범용 문자 인코딩 방법이기 때문입니다. JavaScript는 이러한 변환 프로세스를 달성하는 데 도움이 될 수 있는 일반적으로 사용되는 스크립팅 언어입니다.
이 글에서는 다음 측면에서 JavaScript에서 문자열을 UTF-8 형식으로 변환하는 방법을 소개합니다.
UTF-8은 가변 길이 문자 인코딩입니다. 인코딩 규칙은 다음과 같습니다.
예를 들어 한자 "you"의 유니코드 코드는 "U+4F60"입니다. 위 규칙에 따르면 UTF-8 인코딩으로 변환한 후에는 "E4 BD A0"이 되어야 합니다.
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); }
위 함수는 문자열을 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!