Movatterモバイル変換


[0]ホーム

URL:


MDN Web Docs

이 페이지는 영어로부터 커뮤니티에 의하여 번역되었습니다. MDN Web Docs에서 한국 커뮤니티에 가입하여 자세히 알아보세요.

String.prototype.toWellFormed()

Baseline2023
Newly available

String값의toWellFormed() 메서드는 이 문자열의 모든론 서로게이트가 유니코드 대체 문자 U+FFFD로 대체된 문자열을 반환합니다.

구문

js
toWellFormed()

매개변수

없음.

반환 값

이 문자열의 복사본인 새 문자열로, 모든 론 서로게이트가 유니코드 대체 문자 U+FFFD로 대체됩니다.str잘 형성된 문자열인 경우에도 새 문자열이 반환됩니다(기본적으로str의 복사본).

설명

JavaScript의 문자열은 UTF-16으로 인코딩됩니다. UTF-16 인코딩에는 서로게이트 쌍이라는 개념이 있으며, 이는UTF-16 문자, 유니코드 코드 포인트 및 문자소 클러스터 섹션에 자세히 소개되어 있습니다.

toWellFormed()는 이 문자열의 코드 단위를 반복하고 모든 론 서로게이트를유니코드 대체 문자 U+FFFD로 대체합니다. 이렇게 하면 반환된 문자열이 올바른 형식의 문자열이 되어encodeURI와 같이 올바른 형식의 문자열을 기대하는 함수에서 사용할 수 있습니다. 사용자 정의 구현과 비교할 때toWellFormed()는 엔진이 문자열의 내부 표현에 직접 접근할 수 있으므로 더 효율적입니다.

잘못된 형식의 문자열이TextEncoder와 같은 특정 문맥에서 사용되는 경우 동일한 대체 문자를 사용하여 자동으로 올바른 형식의 문자열로 변환됩니다. 론 서로게이트가 렌더링될 때는 대체 문자(내부에 물음표가 있는 다이아몬드)로도 렌더링됩니다.

예제

toWellFormed() 사용하기

js
const strings = [  // 론 상위 서로게이트  "ab\uD800",  "ab\uD800c",  // 론 하위 서로게이트  "\uDFFFab",  "c\uDFFFab",  // 잘 형성된 문자열  "abc",  "ab\uD83D\uDE04c",];for (const str of strings) {  console.log(str.toWellFormed());}// Logs:// "ab�"// "ab�c"// "�ab"// "c�ab"// "abc"// "ab😄c"

encodeURI()에서 오류 피하기

encodeURI는 전달받은 문자열이 잘 형성된 문자열이 아니라면 오류를 발생시킵니다. 이는toWellFormed()를 사용해서 잘 형성된 문자열로 변환함으로서 피할 수 있습니다.

js
const illFormed = "https://example.com/search?q=\uD800";try {  encodeURI(illFormed);} catch (e) {  console.log(e); // URIError: URI malformed}console.log(encodeURI(illFormed.toWellFormed())); // "https://example.com/search?q=%EF%BF%BD"

명세서

Specification
ECMAScript® 2026 Language Specification
# sec-string.prototype.towellformed

브라우저 호환성

같이 보기

Help improve MDN

Learn how to contribute.

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp