๋ฌธ์์ด ๋ฐ์ดํธ ๊ธธ์ด ๊ณ์ฐ๊ธฐ ์ฌ์ฉ๋ฒ
๋ฌธ์์ด์ ๋ถ์ฌ๋ฃ์ผ๋ฉด UTF-8 ๋ฐ์ดํธ ์, UTF-16 ์ฝ๋์ ๋ ์, ์ฝ๋ํฌ์ธํธ ์, ๊ทธ๋ํ ์๋ฅผ ํ ๋ฒ์ ๋ณด์ฌ์ค๋๋ค. ๋ค ์์น๋ ๊ฐ์ ๋ณด์ด์ง๋ง ์์ฃผ ์ด๊ธ๋ฉ๋๋ค. ์ด๋ชจ์ง ๐ ํ ๊ธ์๋ UTF-8 ๋ก 4๋ฐ์ดํธ, ์ฝ๋์ ๋ 2๊ฐ, ์ฝ๋ํฌ์ธํธ 1๊ฐ, ๊ทธ๋ํ 1๊ฐ์ ๋๋ค. ๊ฐ์กฑ ์ด๋ชจ์ง ๐จโ๐ฉโ๐ง ๋ 18๋ฐ์ดํธ, ์ฝ๋์ ๋ 8๊ฐ, ์ฝ๋ํฌ์ธํธ 5๊ฐ์ธ๋ฐ ๊ทธ๋ํ์ 1๊ฐ์ ๋๋ค. ์ํ ๋ฒํผ์ผ๋ก ๋ฐ๋ก ํ์ธํด ๋ณด์ธ์.
๊ณ์ฐ ๋ฐฉ์๊ณผ ๊ธฐ์ค
UTF-8 ๋ฐ์ดํธ๋ ๋ธ๋ผ์ฐ์ ํ์ค API ์ธ TextEncoder ๋ก ์ค์ ์ธ์ฝ๋ฉํด ์ธ๊ณ , ์ฝ๋ํฌ์ธํธ๋ Array.from, ๊ทธ๋ํ์ ECMA-402 ์ Intl.Segmenter ๋ก ๋๋๋๋ค. UTF-16ยทUTF-32 ๋ฐ์ดํธ๋ ์ฝ๋์ ๋ร2, ์ฝ๋ํฌ์ธํธร4 ์ด๋ฉฐ BOM ์ ํฌํจํ์ง ์์ต๋๋ค. ์ ๋์ฝ๋ ์ปจ์์์ ์ ์ ์๋ฅผ ๋ฐ๋ฅด๊ณ 2026๋ 10์ ๊ธฐ์ค์ผ๋ก ๋์์ ํ์ธํ์ต๋๋ค.
ํ๊ณ์ ์ฃผ์์ฌํญ
Intl.Segmenter ๊ฐ ์๋ ๊ตฌํ ๋ธ๋ผ์ฐ์ ์์๋ ๊ทธ๋ํ ์๋ฅผ ์ฝ๋ํฌ์ธํธ ์๋ก ๋์ฒดํ๊ณ ๊ทธ ์ฌ์ค์ ํ๋ฉด์ ์ ์ต๋๋ค. ํ๋ ์ 50๊ธ์๋ง ๋ณด์ฌ์ค๋๋ค. ์์น๋ง ์๋ ค์ฃผ๋ฉฐ ๊ธธ์ด ์ ํ์ ๋ง์ถ ๋ณด์ ์ ํ์ง ์์ต๋๋ค. ๊ณ์ฐ์ ๋ธ๋ผ์ฐ์ ์์์๋ง ์ผ์ด๋์ง๋ง ํ ํฐ ๊ฐ์ ๋ฏผ๊ฐํ ๋ฌธ์์ด์ ์ด ๋ค ์ง์ฐ์๊ธธ ๊ถํฉ๋๋ค.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
JavaScript ์ str.length ๋ UTF-16 ์ฝ๋์ ๋ ์์ ๋๋ค. ์ด๋ชจ์ง ๐ ๋ ์๋ฌ๊ฒ์ดํธ ์์ด๋ผ 2, ๊ฐ์กฑ ์ด๋ชจ์ง ๐จโ๐ฉโ๐ง ๋ 8 ์ด ๋์ต๋๋ค. ์ฌ๋์ด ์ธ๋ ๊ธ์ ์๋ ๊ทธ๋ํ ํ์ ๋ณด์ธ์.
์ ํ์ด ๋ฐ์ดํธ ๋จ์์ธ์ง ๋ฌธ์ ๋จ์์ธ์ง๊ฐ DBยท์ด ์ค์ ๋ง๋ค ๋ค๋ฆ ๋๋ค. ๋ฐ์ดํธ ์ ํ์ด๋ฉด UTF-8 ๋ฐ์ดํธ ์, ๋ฌธ์ ์ ํ์ด๋ฉด ์ฝ๋ํฌ์ธํธ ์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ณด์ธ์.
๊ธธ์ด์ ๋ง์ถ ๋ง์ค์ยท์๋ฅด๊ธฐ ๊ฐ๊ณต๊ณผ, ํน์ SNSยท๋ฌธ์ ์๋ฒ์ ๊ธ์ ์ ํ ์๋ด๋ ํ์ง ์์ต๋๋ค. ์ธ์ฝ๋ฉ๋ณ ์์น๋ง ๋ณด์ฌ์ค๋๋ค.