๋ฌธ์ฅ์ ๋น์ / ์๊ณ ์ฌ์ฉ ์ค๋ช
๊ฐA๐๋ ๋ช ๊ธ์์ผ๊น: ๊ธ์ ์์ ๋ฐ์ดํธ ์๋ฅผ ๋๋ ์ฝ๊ธฐ
๊ฐ์ ์๊ณ ๋ผ๋ ์ฝ๋ ํฌ์ธํธยทUTF-16ยท๋ฌธ์ ๋ฌถ์ยทUTF-8 ๋ฐ์ดํธ ๊ฐ์ด ๋ฌ๋ผ์ง๋ ์ด์ ๋ฅผ ์ค์ ์์๋ก ํ์ธํฉ๋๋ค.
๊ฐA๐์ ๋ค ์ซ์๋ 3ยท4ยท3ยท8์ ๋๋ค
๋ฌธ์ฅ์ ๋น์์ ๊ฐA๐๋ฅผ ๋ถ์ฌ ๋ฃ์ผ๋ฉด ๊ณต๋ฐฑ ํฌํจ ์ฝ๋ ํฌ์ธํธ๋ 3, UTF-16 ์ฝ๋ ๋จ์๋ 4, ๋์ ๋ณด์ด๋ ๋ฌธ์ ๋ฌถ์์ 3, UTF-8 ๋ฐ์ดํธ๋ 8๋ก ๋์ต๋๋ค. ์๋ก ๋ชจ์๋ ๊ฐ์ด ์๋๋ผ ์ธ๋ ๋์์ด ๋ค๋ฅธ ๊ฒฐ๊ณผ์ ๋๋ค. ํ๊ธ ๊ฐ, ์๋ฌธ A, ์ด๋ชจ์ง ๐๋ ๊ฐ๊ฐ ํ๋์ ์ฝ๋ ํฌ์ธํธ์ง๋ง UTF-16๊ณผ UTF-8๋ก ํํ๋๋ ๊ธธ์ด๋ ๊ฐ์ง ์์ต๋๋ค.
ํค๋ณด๋์ ํค๋ฅผ ๋๋ฅธ ํ์๋ ๊ธ์ ์์ ์ผ์นํ๋ค๊ณ ๋ณผ ์ ์์ต๋๋ค. ํ๊ธ ์ ๋ ฅ๊ธฐ๋ ์ฌ๋ฌ ํค ์ ๋ ฅ์ ํ ์์ ๋ก ์กฐํฉํ ์ ์๊ณ ์ด๋ชจ์ง๋ ๋ชฉ๋ก์์ ํ ๋ฒ์ ๋ฃ๊ธฐ๋ ํฉ๋๋ค. ์๋ ํค๋ณด๋๋ ๊ณต๋ฐฑยทํญยท์ ๋ ฅ ํค์ ์ค๋ฌผ ์์์ ๋๋ค. ์ด ์ฌ์ดํธ๋ ํค๋ฅผ ๋๋ฅธ ํ์๋ฅผ ๊ธฐ๋กํ์ง ์๊ณ ์ ๋ ฅ๋์ ๋ค์ด์จ ๋ฌธ์์ด๋ง ์ง๊ณํฉ๋๋ค.

์ฝ๋ ํฌ์ธํธ์ ์ ์ฅ ๋จ์๋ฅผ ๊ตฌ๋ถํฉ๋๋ค
MDN์ String.length ์ค๋ช ์์ JavaScript ๋ฌธ์์ด ๊ธธ์ด๋ UTF-16 ์ฝ๋ ๋จ์ ์๋ผ๋ ์ ์ ํ์ธํ ์ ์์ต๋๋ค. ์ด๋ชจ์ง ๐๋ UTF-16์์ ๋ ๋จ์๋ผ ๊ฐA๐์ ๊ฐ์ด 4๊ฐ ๋ฉ๋๋ค. ํ๋ฉด์ ์ฝ๋ ํฌ์ธํธ ๊ฐ์ ๋ฌธ์์ด์ ์ฝ๋ ํฌ์ธํธ ๋จ์๋ก ์ํํด ๋ณ๋๋ก ์ผ ๊ฐ์ ๋๋ค.
MDN TextEncoder ๋ฌธ์์ ๋ฐ๋ผ UTF-8๋ก ์ธ์ฝ๋ฉํ ์ค์ ๋ฐ์ดํธ์ด ๊ธธ์ด๋ ๊ณ์ฐํฉ๋๋ค. ์์์ ๊ฐ๋ 3๋ฐ์ดํธ, A๋ 1๋ฐ์ดํธ, ๐๋ 4๋ฐ์ดํธ์ด๋ฏ๋ก ํฉ๊ณ 8๋ฐ์ดํธ์ ๋๋ค. ๋ฌธ์ ํ์ผ์ ์ ๋ชฉยท์์ยท์์ถ ์ ๋ณด๋ ํฌํจํ์ง ์์ต๋๋ค. ์๋ฃ ํ์ธ์ผ์ 2026๋ 10์ 23์ผ์ด๋ฉฐ ํด๋น ์์๋ ์์ฒด ๊ฒ์ฆ์ผ๋ก ๋์กฐํ์ต๋๋ค.
ํ๋๋ก ๋ณด์ด๋ ์ด๋ชจ์ง๊ฐ ์ฌ๋ฌ ์ฝ๋ ํฌ์ธํธ์ผ ์ ์์ต๋๋ค
๊ฐ์กฑ ์ด๋ชจ์ง ๐จโ๐ฉโ๐งโ๐ฆ๋ ์ด ๋๊ตฌ์์ ์ฝ๋ ํฌ์ธํธ 7, UTF-16 ๋จ์ 11, ๋ฌธ์ ๋ฌถ์ 1, UTF-8 ๋ฐ์ดํธ 25๋ก ์ง๊ณ๋ฉ๋๋ค. ์ฌ๋ฌ ์์๋ฅผ ์ฐ๊ฒฐํด ํ ๋ฌถ์์ผ๋ก ํํํ๊ธฐ ๋๋ฌธ์ ๋๋ค. e ๋ค์ ๊ฒฐํฉ ์ ์ผํธ๋ฅผ ๋ถ์ธ eฬ๋ ์ฝ๋ ํฌ์ธํธ๋ 2, ๋ฌธ์ ๋ฌถ์์ 1์ ๋๋ค. ๊ธ๊ผด๊ณผ ๊ธฐ๊ธฐ์ ๋ฐ๋ผ ๋ณด์ด๋ ๋ชจ์์ด ๋ฌ๋ผ๋ ๋ฐ์ดํฐ ๋จ์๋ ๋ฐ๋ก ํ์ธํด์ผ ํฉ๋๋ค.
Intl.Segmenter์ grapheme ๋ถํ ์ ์ด์ฉํด ๋ฌธ์ ๋ฌถ์์ ์ ๋๋ค. ์ด ๊ธฐ๋ฅ์ด ์๋ ์ค๋๋ ๋ธ๋ผ์ฐ์ ์๋ ์ง์ ์ ๋จ์ผ๋ก ํ์ํฉ๋๋ค. Backspace๋ก ํ ๋ฒ ์ญ์ ๋๋ ๋ฒ์ ์ญ์ ํธ์ง๊ธฐยท์ ๋ ฅ ์ํ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์์ด, ์ญ์ ํ์๋ฅผ ๋ฐ์ดํธ ์์ ์ธก์ ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ฉํ์ง ์์ต๋๋ค.

๊ณต๋ฐฑ ์ ์ธ์ ์ค ์์๋ ๊ธฐ์ค์ด ์์ต๋๋ค
๊ณต๋ฐฑ ์ ์ธ ์ฝ๋๋ ์ผ๋ฐ ๊ณต๋ฐฑ๋ฟ ์๋๋ผ ํญ๊ณผ ์ค๋ฐ๊ฟ ๋ฑ JavaScript๊ฐ ๊ณต๋ฐฑ์ผ๋ก ๋ถ๋ฅํ๋ ๋ฌธ์๋ฅผ ์ ์ธํฉ๋๋ค. ๋ณด์ด์ง ์๋ ๋ฌธ์๋ผ๊ณ ์ ๋ถ ์ ๊ฑฐํ์ง๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ํญ์ด ์๋ U+200B๋ ์ด ๊ณต๋ฐฑ ์ ์ธ ๊ท์น์ ๋์์ด ์๋์ด์ ์ซ์์ ๋จ์ต๋๋ค. ์๊ณ ๋ฅผ ์๋์ผ๋ก ์ ๊ทํํ๊ฑฐ๋ ๋์ ์ ๋ณด์ด๋ ๋ฌธ์๋ฅผ ์ ๋ถ ์ญ์ ํ๋ ๊ธฐ๋ฅ๋ ์๋๋๋ค.
๋น ์๊ณ ์ ์ค ์๋ 0์ด๊ณ , ๋ด์ฉ ๋ค์ ์ค๋ฐ๊ฟ์ด ํ๋ ์์ผ๋ฉด ๋ง์ง๋ง ๋น ์ค๋ ํฌํจํฉ๋๋ค. ๊ฐ A ๋ค์ ์ค์ ๐๋ฅผ ๋ฃ๋ ์์๋ ๊ณต๋ฐฑ ํฌํจ ์ฝ๋ ํฌ์ธํธ 5, ๊ณต๋ฐฑ ์ ์ธ 3, UTF-16 ๋จ์ 6, UTF-8 ๋ฐ์ดํธ 10, ์ค ์ 2, ๊ณต๋ฐฑ์ผ๋ก ๋๋ ์ด์ 3์ ๋๋ค. ์ด์ ์๋ ํํ์ ๋ถ์์ด๋ ๋ฌธ์ฅ ์๊ฐ ์๋๋ฉฐ ๊ณต๋ฐฑ์ผ๋ก ๋๋ ๋ฉ์ด๋ฆฌ ์์ ๋๋ค.

์ ์ถ ์ ํ์ ๋ง์ถ๋ ๋ง์ง๋ง ๋์กฐ
์ง์์๋ ๊ฒ์ํ์ ์ ํ์ด ๊ธ์์ธ์ง ๋ฐ์ดํธ์ธ์ง ๋จผ์ ๊ตฌ๋ถํ๊ณ , ๊ทธ ์๋น์ค๊ฐ ์ด๋ชจ์งยท์ค๋ฐ๊ฟยท๊ณต๋ฐฑ์ ์ด๋ค ๊ธฐ์ค์ผ๋ก ์ธ๋์ง ๋์กฐํฉ๋๋ค. ๋ฌธ์ฅ์ ๋น์๋ ์ธ๋ถ ์๋น์ค์ ํ์ฌ ์ ํ์ ์กฐํํ์ง ์์ต๋๋ค. ์ด ๋๊ตฌ์ ๊ฐ์ด ๋ง๋๋ผ๋ ์ ์ถ์ฒ๊ฐ ๋ค๋ฅธ ๊ธฐ์ค์ ์ฐ๋ฉด ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค. ์๊ณ ์์ ์ธก์ ๊ธฐ์ค๊ณผ ์ ์ถ์ฒ ๊ธฐ์ค์ ๋๋ ์ ์ผ๋ฉด ๊ฐ์ ์ซ์๋ก ์คํดํ๋ ์ผ์ ์ค์ผ ์ ์์ต๋๋ค.
์๊ณ ์์ ๋๋ UTF-16 ๊ธฐ์ค 100,000๋จ์๊น์ง ์ ๋ ฅ๋ฐ์ต๋๋ค. ๊ฒฐ๊ณผ๋ฅผ ์ฝ์ ๋ค TXT๋ฅผ ๋ด๋ ค๋ฐ์ผ๋ฉด BOM ์๋ UTF-8 ์๊ณ ๊ฐ ์ ์ฅ๋ฉ๋๋ค. ์ ์ฅ๋ ํ์ผ์ ๋ฌธ์์ด ๋ฐ์ดํธ์ ํ๋ฉด ๊ฐ์ ๊ฐ์ ์ธ์ฝ๋ฉ ๊ธฐ์ค์ด๋ฉฐ ํด๋๊ฐ ํ์ํ๋ ๋์คํฌ ํ ๋น ํฌ๊ธฐ์๋ ๋ค๋ฆ ๋๋ค. UTF-8 ์ธ์ฝ๋ฉ ์ค๋ช ์ ์ฐธ๊ณ ํ๊ณ , ์ ์ถ ์ง์ ์๋ ํด๋น ์๋น์ค ์ ๋ ฅ๋์ ์ต์ข ํ์๋ฅผ ๊ธฐ์ค์ผ๋ก ํ์ธํ ์ ์์ต๋๋ค.