ํ์ฌ:
์ ๋ ๊ทธ๊ฒ์ ๋ฐ๋ํ์ง ์์ต๋๋ค. UTF-8์ ๋งค์ฐ ๊ฐ๋จํ๊ณ ์ ๋์ฝ๋๋ฅผ ์๋ฏธํ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ํ ๋ก ์ด ๋ ๋ฆฝ์ ์ธ ๊ฒ์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ์ด ๋ฌธ์ ๋ ๊ทธ ํ ๋ก ์ด๋ค.
์ด ๋ฌธ์ ์์ ๋ชจ๋ ๋ฌธ์์ด( ์ ๋์ฝ๋ ์๋)์ ๋ํด UTF-8์ ๋ํ ์ฐฌ์ฑ/๋ฐ๋ ์ฃผ์ฅ์ ๋ ผ์ํ๊ณ ์ผ๋ฐ์ ์ธ ๊ฐ์ ๋ฌธ์ ์ ๋ํด ๐ ๋๋ ๐์ ํฌํํฉ์๋ค.
UTF-8์ ๋ํ ์ฃผ์ฅ: ๊ธธ์ด + ๋ฐ์ดํธ๋ณด๋ค ์ฝ๊ฐ ๋ ๋ณต์กํ์ฌ ์ ์ฌ์ ์ธ ๊ตฌํ ์ฐจ์ด๋ก ์ด์ด์ง๋๋ค.
๋ค์ ๋งํ์ง๋ง UTF-8์ ์ ๋์ฝ๋๊ฐ ์๋๋๋ค.
๋ฌด์จ ๋ง์ ํ๋ ๊ฒ๋๊น? ์ด๊ฒ์ ๋ง๋ ์๋๋ ๋ฌธ์ฅ์ ๋๋ค.
๋๋ ๋น์ ์ด ๊ตญ์ ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ ํ์๊ฐ ์๋ค๋ ๊ฒ์ ๋งํ๋ ค๊ณ ํ๋ ๊ฒ ๊ฐ์์. ์ด๊ฒ์ ์ฌ์ค์ ๋๋ค. ๋ฌธ์์ด์ด UTF-8๋ก ์ธ์ฝ๋ฉ๋์ด์ผ ํ๋ค๋ ๊ฒ์ ์ ๊ทํ์ ๊ฐ์ ์ ๋์ฝ๋์ ๋ ๋ณต์กํ ๋ถ๋ถ๊ณผ ์๋ฌด ๊ด๋ จ์ด ์์ต๋๋ค. ์ด๋ ์ธ๊ฐ๊ณผ ์ธํฐํ์ด์คํ๋ ๋ฌธ์์ด ์์ ์ ์ํํ ๋ ์ ์ฉํ ๋๊ตฌ์ด์ง๋ง ์ผ๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ํ์ ํ๋ ์ฌ๋๋ค์๊ฒ ์ ์ฉํ๊ณ ์ ์๋ฅผ ์ธ์ฝ๋ฉํ๋ ๋ฐฉ๋ฒ์ ๊ฒฐ์ ํ ๋๋ ๊ด๋ จ์ด ์๋ ๊ฒ๊ณผ ๊ฐ์ ๋ฐฉ์์ ๋๋ค.
๊ทธ๋ฌ๋ UTF-8์ ๋ง ๊ทธ๋๋ก ์ ๋์ฝ๋ ์ธ์ฝ๋ฉ์ ๋๋ค. ๋น์ ์ ์ง์ ์ ์ฐ์ฌ์ง ๋๋ก ๋ฌด์๋ฏธํฉ๋๋ค. ^_^
๊ทธ๋ฌ๋ UTF-8์ ๋ง ๊ทธ๋๋ก ์ ๋์ฝ๋ ์ธ์ฝ๋ฉ์ ๋๋ค. ๋น์ ์ ์ง์ ์ ์ฐ์ฌ์ง ๋๋ก ๋ฌด์๋ฏธํฉ๋๋ค. ^_^
์, ์ ๋ ํนํ UTF-8์ด ์ค๋ช ํ๋ ์ฝ๋ํฌ์ธํธ ์ธ์ฝ๋ฉ์ ์ธ๊ธํ๋ ๊ฒ์ด์ง ์ ์ ํ ์ฝ๋ํฌ์ธํธ ์ฒ๋ฆฌ๊ฐ ์๋๋๋ค(์ด ์ ์์ ๋ชฉ์ ์ ์ํด ์ฝ๋ํฌ์ธํธ๋ ๋ถํฌ๋ช ํ ์ ์์ ๋๋ค). wasm-isms์ ๋ฃ์ผ๋ฉด UTF-8์ var[u]int์ ๋น์ทํ์ง๋ง ๋ฌธ์์ ๋ ์ ํฉํฉ๋๋ค. ๋ํ UTF-8์ ์ ์ผํ ์ ๋์ฝ๋ ์ธ์ฝ๋ฉ์ด ์๋๋ฉฐ ์ ๋์ฝ๋๊ฐ ์๋ ์ ์๋ฅผ ์ธ์ฝ๋ฉํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ UTF-8์ ์ ๋์ฝ๋๊ฐ ์๋๋๋ค.
์ถ๊ฐ ์ ์์ ๊ฐ๋ณ ์ฝ๋ํฌ์ธํธ๋ฅผ ์ดํด๋ณด๊ณ ์ด๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ ๊ทธ ์ ์์ด ์๋๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ๋ด ์ด์ ๊ฐ ์์์ ๊ฒ์ ๋๋ค. ๋ง ๊ทธ๋๋ก i18n API๊ฐ ์๋ ์ด์ ์๊ฒฉํ ํ๋ฑ ๋น๊ต ๋ฐ โโ์ ๋ ฌ์ ๋์ด ์ฝ๋ ํฌ์ธํธ์ ๋ํ ์์ฒด ๊ฒ์ฌ์ ํ์์ฑ์ ๋ฐ๊ฒฌํ Web API๋ ์์ต๋๋ค.
๋ ๋ค๋ฅธ ์ต์ ์ ๊ฐ ์ฝ๋ ํฌ์ธํธ์ ๋ํ ๋ฐ์ดํธ ๊ธธ์ด + UTF-8์ ๋๋ค( @jfbastien ์ด ๊ฐ ๋ฐ์ดํธ์ ๋ํด UTF-8์ด๋ผ๊ณ ๋งํ์ ๋ ์๋ฏธํ ๊ฒ์ด ์๋ ํ, ์ ์๊ฒ ์ดํด๊ฐ ๋์ง ์๋๋ค๋ ๊ฒ์ ์ธ์ ํฉ๋๋ค). ์ ๊ตํ ์ ๋์ฝ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ฐ์ดํธ ๋ฐฐ์ด, ์คํ์ ๋ฐ ๊ธธ์ด๋ฅผ ์ ๋ ฅ์ผ๋ก ๋ฐ์ ๋ฌธ์์ด์ ๋ฐํํ ์ ์๋๋ก ํ์ฉํ๋ฉด์ ์ค์ ๋ก ์ ๊ฒฝ ์ฐ์ง ์๋ ์์ ํ์์ ๊ฒฝ์ฐ ์ด๊ฒ์ด ๋ ์ด๋ ต๊ฒ ๋ง๋ค์ง ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ ์์ธ "UTF-8 ์ฝ๋ ํฌ์ธํธ"๋ผ๋ ์ ์์ ๋์ํฉ๋๋ค. ๋ฐ์ด๋๋ฆฌ ์ฌ์์ ๊ทธ๋๋ก ๋์ด์ผ ํฉ๋๋ค. ๊ฐ๋ณ ์๋ฒ ๋๋ ํ์ฉ๋ ์ฝ๋ ํฌ์ธํธ, ์ ๊ทํ ๋ฐ ๊ธฐํ ๋์์ค์ ๋ํ ๊ท์น์ ์ ์ํ ์ ์์ต๋๋ค. ๋ถ์ ๋๊ตฌ๋ ์ ์ฌ์ ์ธ ํธํ์ฑ ๋ฌธ์ ์ ๋ํ ๊ฒฝ๊ณ ๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.
์ค๋ฅ ์ฒ๋ฆฌ ๊ฒฐ์ ๋ ์๋ฒ ๋์๊ฒ ๋งก๊ฒจ์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๋ฆ์ด ์๋ ์ธ๋ฑ์ค๋ก WASM ํจ์์ ์ก์ธ์คํ๋ ์์คํ ์ ์ ํจํ ํ์๊ฐ ์์ต๋๋ค(๋ฐ์ดํธ ๊ธธ์ด ์ ๋์ฌ๋ก ๊ฑด๋๋ฐ๊ธฐ ์ฝ์ต๋๋ค).
๋ค์์ ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ ์ ๊ทธ ์ด์ ๋ฅผ ์์ฝํ๋ ค๋ ์๋์ ๋๋ค. ์์ ๋ฐ ์ถ๊ฐ๋ฅผ ๊ฐ์ฅ ํ์ํฉ๋๋ค.
๋ฐ๋ ์ด์ ์ ๋ํ ๋์ ์ดํด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ทธ ์ด์ ๋ ์ฐ๋ฆฌ๊ฐ ๊ทธ๊ฒ์ ์๊ตฌํ ์ ์๋๋ผ๋ UTF-8์ ์ธ๊ธํ๋ฉด โโ์ํ๊ณ ๊ฐ์ ๋ถํ์ํ ๋นํธํ์ฑ์ ๋ง์ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ฐ๋ ์ด์ ์ ๋ํ ๋์ ์ดํด๋ UTF-8์ ์ธ๊ธํ๋ ๊ฒ์กฐ์ฐจ ๋ฌธ์์ด ํด์ ๋ฌธ์ ์ ๊ฐ๋ ์ ์บก์ํ๋ฅผ ์์์ํฌ ์ ์๋ค๋ ๊ฒ์ ๋๋ค.
๊ทธ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ด๋ฌํ ์ด๋ฆ์ ์ ์ฒด ๋ชฉ์ ์ ํ์๋ฅผ ์ํด ๋ฌธ์์ด๋ก ๋ณํํ๋ ๊ฒ์ธ๋ฐ ์ธ์ฝ๋ฉ ์์ด๋ ๋ถ๊ฐ๋ฅํ๋ฏ๋ก ๋๊ตฌ๊ฐ ์ถ์ธกํ ํ์๊ฐ ์๋๋ก UTF-8์ ์ง์ ํด์ผ ํฉ๋๋ค.
๋ฐ๋ ์ด์ ์ ๋ํ ๋ด ์ดํด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. wasm์ด ์ง์ ๋ ์ธ์ฝ๋ฉ์ด ์๋ ๋ค๋ฅธ ์์ญ์ ๋ค๋ฅธ ๋ฌธ์์ด๊ณผ ์ ์ฌํ ํญ๋ชฉ์ด ์๋ ๊ฒฝ์ฐ(์ฆ, ์์์ ๋ ผ์ํ ๊ฒ์ฒ๋ผ ๊ฐ์ ธ์ค๊ธฐ/๋ด๋ณด๋ด๊ธฐ) ์ผ๊ด์ฑ์ ์ํด ๋ฌธ์์ด์ ๋ํ ์ธ์ฝ๋ฉ์ ์ง์ ํด์๋ ์ ๋ฉ๋๋ค. .
@sunfishcode ๋ ์ข์ ์์ฝ์ ์ ๊ณตํ์ง๋ง ์ธ ๊ฐ์ง ์ค์ํ ์ฌํญ์ ์ถ๊ฐํ๊ณ ์ถ์ต๋๋ค.
@jfbastien , ๋ฌธ์์ด์ ๋ํด ๋ฐ์ด๋๋ฆฌ _syntax_(์ธ์ฝ๋ฉ)๋ฅผ ์ ํํ์ง๋ง _semantics_(๋ฌธ์ ์งํฉ)๋ฅผ ์ ํํ์ง ์๋ ๊ฒ์ ๋ชจ๋ ๋์ ์ค์์ ๊ฐ์ฅ ๋ฌด์๋ฏธํฉ๋๋ค. ๋ฐ๋ผ์ ๋ชจ๋ ์ค์ฉ์ ์ธ ๋ชฉ์ ์ ์ํด UTF-8์ ์ ๋์ฝ๋๋ฅผ ์๋ฏธํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค์ ๋งํ์ง๋ง ์ด๊ฒ์ ์์ง์ ๊ดํ ๊ฒ๋ง์ด ์๋๋๋ค. ์ด๋ฆ์ ์ ๋์ฝ๋๋ก ์ ์ํ๋ฉด ๋ชจ๋ ํ๊ฒฝ์ ๋ชจ๋ Wasm ์์ฝ ์์คํ ์์ ๊ฐ์ ๋ก ์ ์ฉ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ ๊ฑฐ์ ๋ชจ๋ ํ๊ฒฝ์ ์ฝ๊ฐ์ ์ ๋์ฝ๋ ์ง์์ด ํ์ํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
@tabatkins , ๊ทํ์ ์ฃผ์ฅ์ ๊ธฐ๋ณธ ๋๋ฉ์ธ ์ค๋ฅ๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ฐ๋ฆฌ๊ฐ ๋งํ๋ ๋ฌธ์์ด์ _user-facing_์ด ์๋๋๋ค. ๊ทธ๋ค์ _dev-facing_ ์ด๋ฆ์ ๋๋ค. ๋ง์/๋๋ถ๋ถ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ์ ๋์ฝ๋ ์๋ณ์๋ฅผ ์ง์ํ์ง ์์ผ๋ฉฐ ๋๊ตฌ๋ ์ง์ํ์ง ์์ต๋๋ค. ์๋ฅผ ๋ค์ด gdb๊ฐ ์ ๋์ฝ๋ ์์ค ์๋ณ์๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๊น? ๋๋ ๊ทธ๋ ๊ฒ ์๊ฐํ์ง ์๋๋ค. ๋ฐ๋ผ์ ๋ชจ๋ ์๋น์๊ฐ _์ด ๊ณต๊ฐ์์_ ์ ๋์ฝ๋๋ก ์๋ ดํ๋ค๊ณ ๊ฐ์ ํ๋ ๊ฒ์ ๋งค์ฐ ๋๊ด์ (๋๋ ์คํ๋ ค ๋นํ์ค์ )์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง์ผ๋ก, ์๊ฒฌ ๋ถ์ผ์น๋ ์น์์ Wasm์ด UTF-8์ ๊ฐ์ ํด์ผ ํ๋์ง _์ฌ๋ถ_๊ฐ ์๋๋ผ _์ด๋์_ ์ฐ๋ฆฌ๊ฐ ์ง์ ํ๋์ง์ ๋๋ค.
๋๋ ๋น์ ์ ์ฃผ์ฅ์ ๊ธฐ์ด๊ฐ ๋๋ ๋๋ฉ์ธ ์ค๋ฅ๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ฐ๋ฆฌ๊ฐ ๋งํ๋ ์ด๋ค ๋ฌธ์์ด๋ ์ฌ์ฉ์์๊ฒ ํ์๋์ง ์์ต๋๋ค. ๊ฐ๋ฐ์์ฉ ์ด๋ฆ์ ๋๋ค. ๋ง์/๋๋ถ๋ถ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ์ ๋์ฝ๋ ์๋ณ์๋ฅผ ์ง์ํ์ง ์์ผ๋ฉฐ ๋๊ตฌ๋ ์ง์ํ์ง ์์ต๋๋ค. ์๋ฅผ ๋ค์ด gdb๊ฐ ์ ๋์ฝ๋ ์์ค ์๋ณ์๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๊น? ๋๋ ๊ทธ๋ ๊ฒ ์๊ฐํ์ง ์๋๋ค. ๋ฐ๋ผ์ ๋ชจ๋ ์๋น์๊ฐ ์ด ๊ณต๊ฐ์์ ์ ๋์ฝ๋๋ก ์๋ ดํ๋ค๊ณ ๊ฐ์ ํ๋ ๊ฒ์ ๋งค์ฐ ๋๊ด์ (๋๋ ์คํ๋ ค ๋นํ์ค์ )์ ๋๋ค.
"dev-facing"์ "์์์ toolchain-facing"์ ์๋ฏธํ๋ฉฐ, ์ด๋ ์ฌ์ ์ ์ธ์ฝ๋ฉ์ ๋์ํด์ผ ํจ์ ์๋ฏธํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋๊ตฌ๊ฐ ์ธ์ฝ๋ฉ "ํ์ง"(์ฆ, ์ถ์ธก, ํนํ ์งง์ ๊ฐ์ ์ ์ฉ๋จ) ๋๋ ๋์ญ ์ธ ์ ๋ณด๊ฐ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ ์ฌ์ ํ ์ฌ์ฉ์์ ๋๋ค. ^_^
๋ง์ ๋๊ตฌ ์ฒด์ธ์ด ์ ๋์ฝ๋๋ฅผ ์ดํดํ์ง ๋ชปํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค๋ฉด ๋ค๋ฅธ ์์์ ๋ฐ์ด๋๋ฆฌ ์ธ์ฝ๋ฉ์ ์ดํดํ๋ค๊ณ ์๊ฐํ๋ ์ด์ ๊ฐ ํ์คํ์ง ์์ต๋๋ค. ๊ทธ๊ฒ์ด ๋น์ ์ ํ๊ณ๋ผ๋ฉด ์ด๋์์๋ 100% ์ง์๋๋ ASCII๋ฅผ ์ง์ ํ๊ณ ์๊ตฌํ์ญ์์ค. ASCII๋ก ์ ํํ๊ณ ์ถ์ง ์๋ค๋ฉด ASCII๊ฐ ์๋ ๋จ์ผ ์ธ์ฝ๋ฉ ์ฒด๊ณ์ธ UTF-8์ด ํ์ฉ๋๋ค๋ ์ฌ์ค์ ์ธ์ ํด์ผ ํฉ๋๋ค.
"์ด, ๋๋ถ๋ถ์ ๊ฒ์ด ASCII๋ง ์ง์ํ์ง๋ง ๋ง์ผ์ ๋๋น ํ์ฌ ๊ฐ๋ฐ์๊ฐ ์ํ๋ ๊ฒ์ ๋ฌด์์ด๋ ๋ฃ์ ์ ์๋๋ก ํ๊ฒ ์ต๋๋ค"๋ผ๊ณ ๋งํ๋ ๊ฒ์ด ๋ ์ธ๊ณ ๋ชจ๋์์ ์ต์ ์ ๋๋ค.
"์ด, ๋๋ถ๋ถ์ ๊ฒ์ด ASCII๋ง ์ง์ํ์ง๋ง ๋ง์ผ์ ๋๋นํ์ฌ ๊ฐ๋ฐ์๊ฐ ์ํ๋ ๊ฒ์ ๋ฌด์์ด๋ ๋ฃ์ ์ ์๋๋ก ํ๊ฒ ์ต๋๋ค"๋ผ๊ณ ๋งํ๋ ๊ฒ์ ๋ ์ธ๊ณ ๋ชจ๋์์ ์ต์ ์ ๋๋ค.
@tabatkins , ์๋ฌด๋ ์์ ๊ฒ์ ์ ์ํ์ง
์ ํ์ ์ฌ์ง๊ฐ ์์ต๋๋ค, tho! ์๋ฒ ๋ฉ ํ๊ฒฝ์ด ๋น ASCII๋ฅผ ์ง์ ํ์ง ์๋ ๊ฒฝ์ฐ ๋ฌธ์์ด์ ๋น ASCII๋ฅผ ์ฌ์ฉํ์ง ๋ง์ญ์์ค . (์ด ๊ฒฝ์ฐ์๋ ์ธ์ฝ๋ฉ ๋ณด์ฆ์ด ํ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด UTF-16์ ASCII์ ํธํ๋์ง ์์ต๋๋ค!)
ํ๊ฒฝ์ด ๋น ASCII๋ฅผ ์ง์ํ๋ ๊ฒฝ์ฐ ์ฌ์ฉํ ์ธ์ฝ๋ฉ์ ์์์ผ ํ๋ฉฐ ๋ชจ๋ ์ํฉ์์ ์ฌ๋ฐ๋ฅธ ์ ํ์ UTF-8์ ๋๋ค.
๋ฌธ์์ด์ ์ธ์ฝ๋ฉ์ ๋ชจ๋ฅด๋ ๊ฒ์ด ์ด๋ค ์ด์ ์ด ์๋์ง ์์ํ๋ ํ๊ฒฝ์ ๋ฌด์์ ๋๊น?
๋ฌธ์์ด์ ๋ํ ์๋ฏธ๋ก (๋ฌธ์ ์งํฉ)์ด ์๋ ์ด์ง ๊ตฌ๋ฌธ(์ธ์ฝ๋ฉ)์ ์ ํํ๋ ๊ฒ์ ๋ชจ๋ ๋์ ์ค์์ ๊ฐ์ฅ ๋ฌด์๋ฏธํฉ๋๋ค. ๋ฐ๋ผ์ ๋ชจ๋ ์ค์ฉ์ ์ธ ๋ชฉ์ ์ ์ํด UTF-8์ ์ ๋์ฝ๋๋ฅผ ์๋ฏธํฉ๋๋ค.
์๋์, ์ ๋ ์๋๋๋ค. ์๋ฅผ ๋ค์ด, ๋์์ (a) ๋ฌธ์์ด์ ASCII ๋ฌธ์๋ก ์ ํํ๊ณ (b) UTF-8๋ก ์ธ์ฝ๋ฉํ๋๋ก ์ง์ ํ๋ ๊ฒ์ด ๋งค์ฐ ํฉ๋ฆฌ์ ์ ๋๋ค. ASCII ๋ฌธ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ธ์ฝ๋ฉ์ ์๋ฏธํ์ง ์์ผ๋ฉฐ, ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ชจ๋ ์ธ์ฝ๋ฉ์ด ASCII์ ํธํ๋ฉ๋๋ค! (์๋ฅผ ๋ค์ด UTF-16์ ๊ทธ๋ ์ง ์์ต๋๋ค.) ๋ฐ๋ผ์ ์ฌ์ ํ ๋ฌด์ธ๊ฐ๋ฅผ ์ง์ ํด์ผ ํฉ๋๋ค. "ASCII ํธํ"์ธ UTF-8์ ์ด์ ์ ํฉํฉ๋๋ค.
๋ค์ ๋งํ์ง๋ง, ์ด๋ฌํ ์ด๋ฆ์ ASCII ์ ์ฉ์ผ๋ก ์ ํํด๋ ๊ด์ฐฎ๋ค๋ฉด ์ธ์ฝ๋ฉ์ US-ASCII๋ก ์ง์ ํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ ๋๋ค. ASCII๋ฅผ ๋์ด์๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ ค๋ฉด ์ธ์ฝ๋ฉ์ UTF-8๋ก ์ง์ ํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ ๋๋ค. ๋ค๋ฅธ ๊ฒ์ ์๊ตฌํ๊ฑฐ๋ ์ ํ ์๊ตฌํ์ง ์๋ ๊ฒ(๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ์๋น์๊ฐ ๋์ญ ์ธ ์ ๋ณด๋ฅผ ์ถ์ธกํ๊ฑฐ๋ ์ฌ์ฉํ๋๋ก ๊ฐ์ํ๋ ๊ฒ)๋ ์ ์ผํ ๋ถํฉ๋ฆฌํ ๊ฐ๋ฅ์ฑ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ค์ ๋งํ์ง๋ง ์ด๊ฒ์ ์์ง์ ๊ดํ ๊ฒ๋ง์ด ์๋๋๋ค. ์ด๋ฆ์ ์ ๋์ฝ๋๋ก ์ ์ํ๋ฉด ๋ชจ๋ ํ๊ฒฝ์ ๋ชจ๋ Wasm ์์ฝ ์์คํ ์์ ๊ฐ์ ๋ก ์ ์ฉ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ ๊ฑฐ์ ๋ชจ๋ ํ๊ฒฝ์ ์ฝ๊ฐ์ ์ ๋์ฝ๋ ์ง์์ด ํ์ํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
๋ค์ ๋งํ์ง๋ง ์ด๊ฒ์ ๊ตญ์ ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด ๋งํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ๋ ผ์ํ๊ณ ์๋ ๊ฒ์ ๋ฐ์ดํธ ์ํ์ค๋ฅผ ๋ค์ ๋ฌธ์์ด๋ก ๋์ฝ๋ฉํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๋งค์ฐ ์ฌ์ํ๊ณ ๋งค์ฐ ๋น ๋ฅธ UTF-8์ ๋์ฝ๋ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ง์๋ง ์์ผ๋ฉด ๋ฉ๋๋ค.
์ธ๊ฐ ์นํ์ ์ธ ๋ฌธ์์ด ์กฐ์์ ์ํํ์ง ์๋ ํ ์ฝ๋ ํฌ์ธํธ๋ณ๋ก ๋ฌธ์์ด์ ๋น๊ตํ๊ณ ์ฝ๋ ํฌ์ธํธ๋ณ๋ก ๋ฌธ์์ด์ ์ ๋ ฌํ๋ ๊ธฐ๋ฅ๋ง ์์ผ๋ฉด ๋ฉ๋๋ค. ๋ ๋ค "์ ๋์ฝ๋ ์ง์"์ด ํ์ํ์ง ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ด๊ฒ์ด ๊ธฐ์กด ์น ๊ธฐ์ ์ด ์ฌ์ฉํ๋ ์ ๋ถ์ด๋ฉฐ Wasm ํ๊ฒฝ์์ ์ผ๋ฐ์ ์ผ๋ก ์ด๋ณด๋ค ๋ ๋ณต์กํ ์์ ์ ์ํํด์ผ ํ ์ด์ ๊ฐ ์์ต๋๋ค.
์ ๋ ๋ชจ๋ ๋ฌธ์์ด์ utf8์ ์๋ฌดํํ๋ ๊ฒ์ ์ฐฌ์ฑํฉ๋๋ค. ์์ํ utf8 ๋์ฝ๋ฉ/์ธ์ฝ๋ฉ์ ์น์ด ์๋ ํ๊ฒฝ์์ (๋ค๋ฅธ ๋ชจ๋ ๊ฒ์ ๋นํด) ๋งค์ฐ ๋ฎ์ impl ๋ถ๋ด์ผ๋ก ๋ณด์ ๋๋ค. ๋ํ ๋ด๊ฐ ๋ณธ ๋ฐ์ ๋ฐ๋ฅด๋ฉด ๊ฐ์ ธ์ค๊ธฐ/์ด๋ฆ์ ๋ํด utf8์ ๊ฒ์ฆํ๋ ๋ฐ ์์๋ ์๊ฐ์ ๋ค๋ฅธ ๋ชจ๋ ๊ฒ์ ์์๋ ์๊ฐ์ ๋นํด ์ค์ํ์ง ์์ผ๋ฏ๋ก ์ฌ๊ธฐ์ ์ฑ๋ฅ ๋ ผ์์ด ์๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค.
์ค์ง์ ์ผ๋ก ์ฐ๋ฆฌ๊ฐ ํต์ฌ wasm ์ฌ์์ UTF8 ๊ฐ์ ํ์ง ์์๋๋ผ๋, ๋งํ๊ธฐ, ๋น์ ์ ๋น์ ์ด ์ด ์ฌ ์๋๋ผ๋ฉด ์ฌ์ฉ์ ์ ์ ํด ์ฒด์ธ๋ UTF8์ ์ฌ์ฉํ์ง ์์ ๊ฒฝ์ฐ์ ๋์ ์๊ฐ์ ๋ฌด์๊ณผ ์ํธ ๊ฑฐ๋ผ๊ณ ๊ทธ๋ฆฌ๊ณ ์๋ง ๋น์ ์ ๋งํ๋ค "๋์ฌ"ํ๊ณ ์ด์จ๋ ์์ ์ ๋น utf8 ์์ ์ ์ํํ์ญ์์ค.
๋ด๊ฐ realllly ๊ฐ์ด ํ ๊ฒ์ ๋๋ค ๋ฌด์์ํ์ง๋ง, ์ด๊ฒ์ ์ฐจ๋จํ๋ ๊ฒ ํด๊ฒฐ # 984์ ๋๋ค ...
@lukewagner ๋๋ #984๊ฐ ์ด๊ฒ์ ๋ํด ์ฐจ๋จ๋์๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค. ๐
๋ ๋น์ ์ด ์ณ์ ๊ฒ ๊ฐ์์.
๋ฌธ์์ด์ ์ธ์ฝ๋ฉ์ ๋ชจ๋ฅด๋ ๊ฒ์ด ์ด๋ค ์ด์ ์ด ์๋์ง ์์ํ๋ ํ๊ฒฝ์ ๋ฌด์์ ๋๊น?
@tabatkins , ์์ง ์ถฉ๋ถํ ๋ช ํํ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค. ๋๋ ๊ทธ๋ฐ ํ๊ฒฝ์ ์์ํ์ง ์๋๋ค. ๊ทธ๋ฌ๋ ํธํ๋์ง ์๋ ์๊ตฌ ์ฌํญ์ด ์๋ ๊ด๋ฒ์ํ ํ๊ฒฝ์ ์์ํฉ๋๋ค. ๋ชจ๋ ๊ฒ์ด UTF-8์ ํ์ ์งํฉ์ ์๋๋๋ค. ์๋ฅผ ๋ค์ด Latin1์ ์ฌ์ ํ โโ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค. ๋น์ ์ ์ ๊ฒฝ ์ฐ์ง ์์ ์๋ ์์ง๋ง, ํ๊ฒฝ ๋ค์์ฑ์ ๋ฐฉํดํ๋ ๋ถํ์ํ ๋์ ๋ฃ๋ ๊ฒ์ ํต์ฌ Wasm ์คํ์ ์ผ์ด ์๋๋๋ค.
์ ์ฒด ์ฌ์ด ์๋ ํ ์ฌ์ฉ์ ์ ์ ๋๊ตฌ ๋ชจ์์ด utf8๋ ์ฌ์ฉํ์ง ์์ผ๋ฉด ๋ฌด์๊ณผ๋ ์ํธ ์ด์ฉํ๋ ๋ฐ ๋์ ์๊ฐ์ด ๊ฑธ๋ฆด ๊ฒ์ ๋๋ค.
@lukewagner , ์ ๋ ์ค์ ๋ก Wasm์ด ์ ์ฌ์ ์ผ๋ก ๊ฑฐ์ ๊ฒน์น์ง ์๋ ๋ค์ํ "๋๋ฅ"์์ ์ฌ์ฉ๋ ๊ฒ์ผ๋ก ๊ธฐ๋ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ค์ดํ๋ ๊ณณ์์ interop์ ์ง์ ํ ์ ์์ต๋๋ค (์ค์ ๋ก ์ด๋ฆ ์ธ์ฝ๋ฉ์ ๋ค๋ฅธ ํ๋ซํผ๊ฐ์ ๋ชจ๋์ ๊ณต์ ํ๋ ๋ฐ ๊ฐ์ฅ ์ ์ ๋ฌธ์ ๊ฐ ๋ ๊ฒ์ ๋๋ค. ํธ์คํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค). ์ ์ฒด ์ฌ์กฐ์ฐจ๋ ๋นํ์ค์ ์ด์ง ์์ต๋๋ค. ํนํ wrt ์๋ฒ ๋๋ ์์คํ (์ ๋์ฝ๋๋ฅผ ๊ฑฐ์ ์ฌ์ฉํ์ง ์๋ ๊ฒฝํฅ์ด ์์)์ด ๊ทธ๋ ์ต๋๋ค.
๋น ๋ธ๋ผ์ฐ์ ๊ธฐ๋ฐ WebAssembly ์์ง์ ๊ตฌํํ๋ ๋ฐ ์์ด ๊ฐ์ฅ ์ด๋ ค์ด ๋ถ๋ถ ์ค ํ๋๋ ๋ธ๋ผ์ฐ์ (์ฃผ๋ก JS ๋ถ๋ถ)์์ ํ๋ ๋ฐฉ์๋๋ก ์๋ํ๋๋ก ๋ง๋๋ ๊ฒ์ ๋๋ค. ์ธ์ฝ๋ฉ์ด ํ์คํ๋์ง ์์ผ๋ฉด ๋ชจ๋ ์ฌ๋์ด ์น ๋์์ ๋ํด ์ํ๋ ์์ ์ ๋ณต์ฌํ๋ ์ฌ์ค์์ ํ์ค์ด ๋ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ด๋ฌํ ๋ฌธ์์ด์ ๋์ฝ๋ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ ๋ณด๋ฅผ ์ฐพ๊ธฐ๊ฐ ๋ ์ด๋ ค์์ง๋๋ค.
์ผ๋ถ ํ๊ฒฝ์์ ํ์ฉ๋ ์ฝํ ์ธ ๋ฅผ ์ถ๊ฐ๋ก ์ ํํ๋ ๋ฐ ๊ฐ์น๊ฐ ์์ ์ ์์ง๋ง UTF-8์ ์๊ตฌํ์ง ์์ผ๋ฉด ๋ ์ด๋ ค์์ง๋๋ค.
@MI3Guy , ๋ฐ๋ ์ ์์ JS API์ ์ผ๋ถ๋ก UTF-8 ์ธ์ฝ๋ฉ์ ์ง์ ํ๋ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ JS ์๋ฒ ๋ฉ์ ๊ตฌ์ถํ๋ ๊ฒฝ์ฐ ์ด๋ ์ชฝ์ด๋ UTF-8๋ก ์ ์๋๋ฉฐ ์๋ฌด๋ฐ ์ฐจ์ด๊ฐ ์์ต๋๋ค. (๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ ์น๋ JavaScript๋ ์๋ ๋ค๋ฅธ ์๋ฒ ๋ API๋ ํ์ฉํ๊ณ ์ ํฉ๋๋ค.)
์ค๋ฅธ์ชฝ. ์์ ์ JS ์๋ฒ ๋ฉ์ ์ํํ์ง ์๋ ๊ฒฝ์ฐ WebAssembly ๋๊ตฌ ์ฒด์ธ์ ์ฌ์ฉํ๊ธฐ ์ํด JS ์๋ฒ ๋๊ฐ ์ํํ๋ ๋ง์ ์์ ์ ์๋ฎฌ๋ ์ดํธํด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค.
์ฝ๋ ํฌ์ธํธ ์์ ๋ํด varuint + ๊ฐ ์ฝ๋ ํฌ์ธํธ์ ๋ํด UTF-8์ ์ํํ์ญ์์ค.
์ ๋ ์ด ์ต์ ์ ๋ํด ๋ฐ๋ ์๊ฒฌ์ ๋งํ๊ณ ์ถ์ต๋๋ค. ์ด๋ ์ํฉ์ ๋ณต์กํ๊ฒ ๋ง๋ค๊ณ ์ฌ์ฉ์๋ณ ์น์ ์ ์ ์ฉํ์ง ์์ผ๋ฉฐ ์ ์ฉํ ์ ์์ผ๋ฉฐ ๋ด๊ฐ ๋ณผ ์ ์๋ ์ด์ ๋ ์ ๊ณตํ์ง ์์ต๋๋ค. UTF-8 ๋ฌธ์์ด์ ์ฝ๋ ํฌ์ธํธ ์๋ฅผ ์๊ธฐ ์ํด ์ค์ ๋ก๋ ํญ์ ๋ฌธ์์ด์ ์ค์บํ๊ฒ ๋ฉ๋๋ค. ์๋ชป๋ ์ธ์ฝ๋ฉ์ด๋ฏ๋ก ์ฝ๋ ํฌ์ธํธ๋ฅผ ๊ณ์ฐํ ์๋ ์์ต๋๋ค.
๋ชจ๋ ๊ฒ์ด UTF-8์ ํ์ ์งํฉ์ ์๋๋๋ค. ์๋ฅผ ๋ค์ด Latin1์ ์ฌ์ ํ โโ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค. ๋น์ ์ ์ ๊ฒฝ ์ฐ์ง ์์ ์๋ ์์ง๋ง, ํ๊ฒฝ ๋ค์์ฑ์ ๋ฐฉํดํ๋ ๋ถํ์ํ ๋์ ๋ฃ๋ ๊ฒ์ ํต์ฌ Wasm ์คํ์ ์ผ์ด ์๋๋๋ค.
์ณ์; UTF-8์ ASCII ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ฉด ๊ฑฐ์ ๋ชจ๋ ์ธ์ฝ๋ฉ๊ณผ ๋ค๋ฆ ๋๋ค. ๋๋ ๋น์ ์ ์์ ์ด ๋ฌด์์ธ์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์ค์ ๋ก Latin-1 ์ธ์ฝ๋ฉ์ ์ฌ์ฉ ํ๋ ๊ฒ์ ๋๊ฐ์ ๋ณด์ด์ง๋ง ๋ค๋ฅธ ๋ฌธ์๋ฅผ ์ธ์ฝ๋ฉํ๋ ๋ค๋ฅธ ์ธ์ฝ๋ฉ์ด ๋ง์ด ์๊ธฐ ๋๋ฌธ์ ์ ํํ๊ฒ ์ข์ง ์์ต๋๋ค. Wasm ์ฝ๋์์ "รฆther"๋ผ๋ ์ด๋ฆ์ ์ฌ์ฉํ๋ ค๊ณ ์๋ํ๊ณ ์ด๋ฅผ Latin-1๋ก ์ธ์ฝ๋ฉํ๋ฉด ๋ค๋ฅธ ์ฌ๋์ด (๋น๋นํ๊ฒ) UTF-8 ํด์ฒด์ธ์ผ๋ก ์ด๋ฆ์ ์ฝ์ผ๋ ค๊ณ ํ๋ฉด ๋์ฝ๋ฉ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ๋๋ ๋ค๋ฅธ ์ฌ๋์ด ๋น์ทํ ์ค์๋ฅผ ํ์ง๋ง ๋์ Windows-1250 ์ธ์ฝ๋ฉ(์ค๋ถ/๋๋ถ ์ ๋ฝ ์ธ์ด์ฉ)์ ์ฌ์ฉํ์ ์ ์์ต๋๋ค. ๊ทธ๋ค์ "ฤther"๋ผ๋ ๋ง๋ ์๋๋ ๋จ์ด๋ฅผ ์ป๊ฒ ๋ฉ๋๋ค.
์ฌ๊ธฐ์ ๋ณดํธํ๋ ค๋ "๋ค์์ฑ"์ด ์ด๋ค ๊ฒ์ธ์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋ง ๊ทธ๋๋ก ๋ค๋ฅธ ์ธ์ฝ๋ฉ์ ์ฌ์ฉํ๋ฉด ์๋ฌด๋ฐ ์ด์ ์ด ์์ผ๋ฉฐ ์๋ง์ ๋จ์ ์ด ์์ต๋๋ค. ๋ค๋ฅธ ์ธ์ฝ๋ฉ์ผ๋ก ์ธ์ฝ๋ฉํ ์ ์๋ ๋ชจ๋ ๋ฌธ์๋ ์ ๋์ฝ๋๋ก ์กด์ฌํ๋ฉฐ UTF-8๋ก ์ธ์ฝ๋ฉํ ์ ์์ง๋ง ๊ทธ ๋ฐ๋๋ ๊ฑฐ์ ์ฌ์ค์ด ์๋๋๋ค. ์ค๋๋ UTF-8์ ์ฒ๋ฆฌํ ์ ์๋ ๊ด๋ จ ๋๊ตฌ๋ ์์ต๋๋ค. ์ด ๊ธฐ์ ์ ๋ง ๊ทธ๋๋ก 20๋ ์ด ๋์์ต๋๋ค .
๋๋ ์น ํ์ค์ด ๋ช ๋ ์ ์ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค๊ณ ๊ณ์ ๋งํ๊ณ ์์ต๋๋ค. Wasm์ด ์น ๊ท์น์ ๋ฐ๋ผ์ผ ํ๋ ์น ์ฌ์์ด๊ธฐ ๋๋ฌธ์ด ์๋๋ผ ํ ์คํธ ์ธ์ฝ๋ฉ์ด ๊ฑฐ์ ๋ชจ๋ ์ฌ๋์ด ๋์ผํ ๋ฌธ์ ๋ฅผ ๊ฐ๊ณ ์๊ณ ์น์ด ์ด๋ฏธ ์ฒ๋ฆฌํ ์ํ๊ณ ๋ฌธ์ ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด๋ฅผ ์๋ชป ์ดํดํ๋ ๊ณ ํต์ ๊ฒช๊ณ ์ฌ๋ฐ๋ฅด๊ฒ ์ํํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ ์ต๋๋ค. Wasm์์ ๋ค์ ํ๋ฆฌ๊ฒ ํ๋ ๊ฒ์ ๋ฏธ๋์ด ์๋๋๋ค. ํ ์คํธ๋ฅผ ์ธ์ฝ๋ฉํด์ผ ํ๋ ๋ชจ๋ ํ๊ฒฝ์ ์ฒ์๋ถํฐ UTF-8๋ก ๋ฐ๋ก ์ด๋ํ๊ฑฐ๋ ๋ค๋ฅธ ๋ชจ๋ ์ฌ๋๋ค์ด ๊ฒช๋ ๋์ผํ ์ค์์ ๊ณ ํต์ ๊ฒช๊ณ ๊ฒฐ๊ตญ UTF-8๋ก ์ ์ฐฉํฉ๋๋ค. (๋๋ ๋๋ฌผ๊ฒ ๋ค๋ฅธ ์ธ์ฝ๋ฉ์ผ๋ก ํ์คํํ ์ ์์ ์ ๋๋ก ์ถฉ๋ถํ ๊ณ ๋ฆฝ๋ ํ๊ฒฝ์ ๊ฐ๋ฐํ๊ณ ์ธ๋ถ ํ๊ฒฝ๊ณผ ํต์ ํ๋ ๋๊ฐ๋ฅผ ๊ฑฐ์ ์ง๋ถํ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ธ์ฝ๋ฉ์ผ๋ก ํ์คํ ํ๋ ๊ฒ์ด ์ด ๋ชจ๋ ๊ฒ์ ๋๋ค.)
๋ฐ๋ผ์ JS ์๋ฒ ๋ฉ์ ๊ตฌ์ถํ๋ ๊ฒฝ์ฐ ์ด๋ ์ชฝ์ด๋ UTF-8๋ก ์ ์๋๋ฉฐ ์๋ฌด๋ฐ ์ฐจ์ด๊ฐ ์์ต๋๋ค. (๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ ์น๋ JavaScript๋ ์๋ ๋ค๋ฅธ ์๋ฒ ๋ API๋ ํ์ฉํ๊ณ ์ ํฉ๋๋ค.)
์ด ๋ฌธ์ ๋ ์น ๋๋ JS์ ๊ด๋ จ์ด ์์ต๋๋ค. ์ํ๊ณ์ ๋ชจ๋ ๋ถ๋ถ์ ์๋ ค์ง ์ผ๊ด๋ ํ ์คํธ ์ธ์ฝ๋ฉ์ ์ํ๋ฉฐ ํ๋ก๊ทธ๋๋ฐ ํ๊ฒฝ, ๊ตญ๊ฐ ๋ฐ ์ธ์ด ์ ๋ฐ์ ๊ฑธ์ณ ๋๋ฆฌ ๋์๋๋ ๋จ์ผ ์ธ์ฝ๋ฉ์ธ UTF-8์ด ์์ต๋๋ค.
๋๋ '๊ธธ์ด(๋ฐ์ดํธ ๋จ์) + UTF-8 ๊ฐ ๋ฐ์ดํธ์ ๋ํ varuint ์ํ'์ ํฌํํฉ๋๋ค. ๊ทธ๊ฒ์ด ๋ ผ์์ ์ฌ์ง๊ฐ ์๋ ์ ํ์ด ์๋๋ผ๊ณ ๊ฐ์ ํ๋ฉด - ๊ฑฐ์ ๋ชจ๋ ๋ฌธ์์ด ๊ตฌํ์ "์ฝ๋ ํฌ์ธํธ ์"๊ฐ ์๋ "์ฝ๋ ๋จ์ ์"๋ก ๋ฌธ์์ด์ ์ ์ฅํฉ๋๋ค. ์๋ํ๋ฉด ๋ ๊ฐ๋จํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ฌ๋ฉด ์ค์ ์ง๋ฌธ์ "๋ฌธ์์ด์ด ์๋ ๊ฒฝ์ฐ ์ ํจ์ฑ ๊ฒ์ฌ์ ์คํจํด์ผ ํฉ๋๋ค"๊ฐ ์๋๋๋ค. ์ ํจํ UTF-8"?
#970์์ ์ง์ ํ๋ฏ์ด ์ ํจํ์ง ์์ UTF-8์ UTF-16
์ ๋ฐ์ ์ผ๋ก UTF-8์ ์๋ฌดํํ์๊ณ ๋งํ๊ณ ์ถ์ต๋๋ค. ๋๊ตฐ๊ฐ๊ฐ UTF-8๋ก ๋ณํํ ์ ์๋ ๋ฐ์ดํธ๋ฅผ ๊ฐ์ง๊ณ ์๋ ์ด์ํ ๊ฒฝ์ฐ(์๋ง๋ ์ธ์ฝ๋ฉ์ ์ ์ ์๊ธฐ ๋๋ฌธ์), ์์์ ๋ฐ์ดํธ๋ฅผ UTF-8๋ก ์์ญํ ์ ์์ต๋๋ค.
์ฌ๊ธฐ์ ๋ณดํธํ๋ ค๋ "๋ค์์ฑ"์ด ์ด๋ค ๊ฒ์ธ์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
@tabatkins ๋ค, ๊ทธ๊ฒ ์คํด์ ํต์ฌ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
WebAssembly๋ ์ด๋ฆ์๋ ๋ถ๊ตฌํ๊ณ ์น์๋ง ๊ตญํ๋์ง ์๋๋ค๋ ์ ์ ์ธ์ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๊ฐ ๋ ์ด์ด๊ฐ ๊ฐ๋ฅํ ํ ๋๋ฆฌ ์ฌ์ฉ๋๋๋ก ์ ์ ํ ๋ ์ด์ด๋ก ์ ์ํ๋ ๊ฒ์ ๋งค์ฐ ์ ์คํฉ๋๋ค.
ํนํ _core_๋ ์ค์ ๋ก ์น ๊ธฐ์ ์ด _์ ํ_ ์๋๋๋ค. ๋์ _๊ฐ์ ISA _๋ก ์๊ฐํ์ญ์์ค. ์ด๋ฌํ ์ถ์ํ๋ ๋งค์ฐ ํ๋ถํ(์น)์์ ๋งค์ฐ ๊ธฐ์ด์ ์ธ(์๋ฒ ๋๋ ์์คํ )์ ์ด๋ฅด๊ธฐ๊น์ง ๋ค์ํ ํ๊ฒฝ์์ ์ ์ฉํ๋ฉฐ ์๋ก ๊ด๋ จ์ด ์๊ณ ๋์ฒด๋ก ํธํ๋์ง ์์ผ๋ฉฐ ์ถฉ๋ํ๋ ์ ์ฝ ์กฐ๊ฑด์ด ์์ต๋๋ค( Wasm์ ๋ณ๊ฒฝํ ์์น์ ์์).
๋ฐ๋ผ์ C ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ชจ๋ ๋ฌธ์์ด ๋ฆฌํฐ๋ด์ ์ ๋์ฝ๋๋ฅผ ์ ์ฉํ๋ ๊ฒ๋ณด๋ค _core_ Wasm์ ์ ๋์ฝ๋๋ฅผ ์ ์ฉํ๋ ๊ฒ์ ๋ ์ด์ ์๋ฏธ๊ฐ ์์ต๋๋ค. ์ผ๋ถ ์ ์ฌ ๊ณ ๊ฐ์๊ฒ ์ด ํ์ค์ ์๋ฐํ๋๋ก ๊ฐ์ํ ๋ฟ์ ๋๋ค. ์ด๋์ ๋ฌด์์ ๋๊น?
๊ทธ๋ฌ๋ _concrete_ ํ๊ฒฝ(์: JavaScript)์์ ์๋ฒ ๋ฉ ๋ฐ API๋ฅผ ์ ์ํ๋ ์ด ํต์ฌ ์ฌ์ ์์ ์ถ๊ฐ ์ฌ์ ๋ ์ด์ด๊ฐ ์์ ๊ฒ์ ๋๋ค. ๊ทธ ์์ค์์ ๋ฌธ์์ด ์ธ์ฝ๋ฉ์ ์์ ํ๋ ๊ฒ์ ์๋ฒฝํ๊ฒ ์ดํด๊ฐ ๋๋ฉฐ, ๋ฐ๋์ ๊ทธ๋ ๊ฒ ํด์ผ ํฉ๋๋ค.
์ถ์ : Wasm์ ๋ฒ์๋ฅผ ์ ์ํ๋ ์ฌ๋ก๊ฑด์ ๊ณตํต ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ํ ์ถ์ํ๊ฐ ์๋๋ผ ๊ณตํต ํ๋์จ์ด์ ๋ํ ์ถ์ํ๋ผ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ๋์จ์ด๋ ๋ฌธ์์ด ์ธ์ฝ๋ฉ๊ณผ ๊ฐ์ ์ํํธ์จ์ด ๋ฌธ์ ์ ๋ถ๊ฐ์ง๋ก ์ ์ ๋๋ค. ๊ทธ๊ฒ์ด ๋ฐ๋ก ABI์ ๋ชฉ์ ์ ๋๋ค.
@rossberg-chromium
๋ฐ๋ผ์ C ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ชจ๋ ๋ฌธ์์ด ๋ฆฌํฐ๋ด์ ์ ๋์ฝ๋๋ฅผ ์ ์ฉํ๋ ๊ฒ๋ณด๋ค ์ฝ์ด Wasm์ ์ ๋์ฝ๋๋ฅผ ์ ์ฉํ๋ ๊ฒ์ ๋ ์ด์ ์๋ฏธ๊ฐ ์์ต๋๋ค. ์ผ๋ถ ์ ์ฌ ๊ณ ๊ฐ์๊ฒ ์ด ํ์ค์ ์๋ฐํ๋๋ก ๊ฐ์ํ ๋ฟ์ ๋๋ค. ์ด๋์ ๋ฌด์์ ๋๊น?
100% ๋์ํฉ๋๋ค. ์ด ๋ฌธ์ ๋ ์ ๋์ฝ๋์ ๊ดํ ๊ฒ์ด ์๋๋ผ ์ ์๋ฅผ ์ ๋์ฝ๋๋ก ํด์ํ์ง ์์๋ ๋๋ ์ ์ ์ธ์ฝ๋ฉ์ธ UTF-8์ ๊ดํ ๊ฒ์ ๋๋ค.
๋๋ ์ฐ๋ฆฌ๊ฐ ๊ทธ๊ฒ์ ๋์ํ๋์ง ์ดํดํ ์ ์์ต๋๋ค. UTF-8์ ์ฌ์ฉํ ์ ์์ต๋๊น? ๊ทธ๋ ์ง ์๋ค๋ฉด ๊ทธ ์ด์ ๋ ๋ฌด์์ ๋๊น?
@jfbastien , ๋ชจ๋ C ๋ฌธ์์ด ๋ฆฌํฐ๋ด์ UTF-8 ์ค์๋ฅผ ์๊ตฌํ๋ ๊ฒ์ด ๋ ์์ฐ์ ์ ๋๊น?
์์ ์ธ๊ธํ๋ฏ์ด ์ธ์ฝ๋ฉ์ ์ ํํ์ง๋ง ๋ฌธ์ ์งํฉ์ ์ ํํ๋ ๊ฒ์ ์๋ฏธ๊ฐ ์์ต๋๋ค. ์๋ฏธ ์์ด ๊ตฌ๋ฌธ์ ์ ์ํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค. ์ ๊ทธ๋ด๊น์? ์ํธ ์ด์ฉ์ฑ ์ธก๋ฉด์์ 0์ ์ป์ง๋ง UTF-8์ ์ฌ์ฉํ์ง ์๋ ํ๊ฒฝ(์ด์จ๋ ์ ๋์ฝ๋ ํ๊ฒฝ์์๋ง ์ฌ์ฉ)์ ๋ํด์๋ ์ฌ์ ํ ์ธ์์ ์ธ ์ฅ์ ๋ฌผ์ ์ธ์๋๋ค.
@jfbastien , ๋ชจ๋ C ๋ฌธ์์ด ๋ฆฌํฐ๋ด์ UTF-8 ์ค์๋ฅผ ์๊ตฌํ๋ ๊ฒ์ด ๋ ์์ฐ์ ์ ๋๊น?
์ดํด๊ฐ ์๋๋๋ฐ ์ค๋ช ํด์ฃผ์ค์์๋์?
์์ ์ธ๊ธํ๋ฏ์ด ์ธ์ฝ๋ฉ์ ์ ํํ์ง๋ง ๋ฌธ์ ์งํฉ์ ์ ํํ๋ ๊ฒ์ ์๋ฏธ๊ฐ ์์ต๋๋ค. ์๋ฏธ ์์ด ๊ตฌ๋ฌธ์ ์ ์ํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค. ์ ๊ทธ๋ด๊น์? ์ํธ ์ด์ฉ์ฑ ์ธก๋ฉด์์ 0์ ์ป์ง๋ง UTF-8์ ์ฌ์ฉํ์ง ์๋ ํ๊ฒฝ(์ด์จ๋ ์ ๋์ฝ๋ ํ๊ฒฝ์์๋ง ์ฌ์ฉ)์ ๋ํด์๋ ์ฌ์ ํ ์ธ์์ ์ธ ์ฅ์ ๋ฌผ์ ์ธ์๋๋ค.
ํ ๋ก ์ ํต์ฌ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
@tabatkins ๋ ์ ํํ ์ด๊ฒ์ ๋ํ ์ ๋ก๋ฅผ ๋ค๋ฃจ์์ต๋๋ค.
๋ค์ ๋งํ์ง๋ง ์ด๊ฒ์ ๊ตญ์ ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด ๋งํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ๋ ผ์ํ๊ณ ์๋ ๊ฒ์ ๋ฐ์ดํธ ์ํ์ค๋ฅผ ๋ค์ ๋ฌธ์์ด๋ก ๋์ฝ๋ฉํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๋งค์ฐ ์ฌ์ํ๊ณ ๋งค์ฐ ๋น ๋ฅธ UTF-8์ ๋์ฝ๋ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ง์๋ง ์์ผ๋ฉด ๋ฉ๋๋ค.
์ธ๊ฐ ์นํ์ ์ธ ๋ฌธ์์ด ์กฐ์์ ์ํํ์ง ์๋ ํ ์ฝ๋ ํฌ์ธํธ๋ณ๋ก ๋ฌธ์์ด์ ๋น๊ตํ๊ณ ์ฝ๋ ํฌ์ธํธ๋ณ๋ก ๋ฌธ์์ด์ ์ ๋ ฌํ๋ ๊ธฐ๋ฅ๋ง ์์ผ๋ฉด ๋ฉ๋๋ค. ๋ ๋ค "์ ๋์ฝ๋ ์ง์"์ด ํ์ํ์ง ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ด๊ฒ์ด ๊ธฐ์กด ์น ๊ธฐ์ ์ด ์ฌ์ฉํ๋ ์ ๋ถ์ด๋ฉฐ Wasm ํ๊ฒฝ์์ ์ผ๋ฐ์ ์ผ๋ก ์ด๋ณด๋ค ๋ ๋ณต์กํ ์์ ์ ์ํํด์ผ ํ ์ด์ ๊ฐ ์์ต๋๋ค.
๊ทธ๋์ ๋์ํฉ๋๋ค. ์ด ์ ์์ ๊ทํ์ ๋ง๋ก "์๋ฏธ ์๋ ๊ตฌ๋ฌธ ์ ์"์ ๋๋ค. ์์ฃผ ํํ ์ผ์ ๋๋ค. ์ฌ์ค, WebAssembly์ ํ์ฌ ๊ธธ์ด + ๋ฐ์ดํธ ์ฌ์์ ์ด๋ฏธ ์ด๊ฒ์ ํ๊ณ ์์ต๋๋ค!
์ฅ์ ๋ฌผ์ด ๋ฌด์์ธ์ง ์ดํดํ๊ณ ์ถ์ต๋๋ค. ๋ ์ ๋ง ํ๋๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
WebAssembly๋ ์ด๋ฆ์๋ ๋ถ๊ตฌํ๊ณ ์น์๋ง ๊ตญํ๋์ง ์๋๋ค๋ ์ ์ ์ธ์ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
๋๋ ์ด๊ฒ์ด ์น๊ณผ ์๋ฌด ๊ด๋ จ์ด ์๋ค๊ณ ๋ฐ๋ก ์์ ๋ ผํ์์ ์ธ๊ธํ์ต๋๋ค. ๋น์ ์ ์ด ์ฃผ์ฅ์ ๊ณ์ ์ฌ์ฉํ๋ ค๊ณ ํ๊ณ , ๊ทธ๊ฒ์ ๋๋ฅผ ์ ๋ง ํผ๋์ค๋ฝ๊ฒ ํฉ๋๋ค. ๋ด๊ฐ ๋งํ๋ ๊ฒ์ ์น๊ณผ ์๋ฌด ๊ด๋ จ์ด ์์ต๋๋ค. ๋๋ ๋ฐฐ์ด ๊ตํ์ ์ค์ํ ์๋ก์ ์น์ ๊ฒฝํ์ ์ง์ ํ๊ณ ์์ ๋ฟ์ ๋๋ค.
๋ฐ๋ผ์ C ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ชจ๋ ๋ฌธ์์ด ๋ฆฌํฐ๋ด์ ์ ๋์ฝ๋๋ฅผ ์ ์ฉํ๋ ๊ฒ๋ณด๋ค ์ฝ์ด Wasm์ ์ ๋์ฝ๋๋ฅผ ์ ์ฉํ๋ ๊ฒ์ ๋ ์ด์ ์๋ฏธ๊ฐ ์์ต๋๋ค. ์ผ๋ถ ์ ์ฌ ๊ณ ๊ฐ์๊ฒ ์ด ํ์ค์ ์๋ฐํ๋๋ก ๊ฐ์ํ ๋ฟ์ ๋๋ค. ์ด๋์ ๋ฌด์์ ๋๊น?
๋ฌธ์์ด ๋ฆฌํฐ๋ด์ด ASCII ์ธ์ฝ๋ฉ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ C ์๋ ๋ด์ฅ ์ธ์ฝ๋ฉ์ด ์์ต๋๋ค. (๋ค๋ฅธ ๊ฒ์ ์ํ๋ฉด ์ ์ ํ ๋ฐ์ดํธ ์ํ์ค๋ฅผ ์ด์ค์ผ์ดํํ์ฌ ์ง์ ์ํํด์ผ ํฉ๋๋ค.) ์ต์ C++์์๋ UTF-16 ๋ฐ UTF-8 ๋ฌธ์์ด ๋ฆฌํฐ๋ด์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ์ฌ์ ํ ์์์ ๋ฐ์ดํธ๋ฅผ ๋ค์์ ์ฌ์ฉํ์ฌ ๋ฌธ์์ด์ ๋ฃ์ ์ ์์ต๋๋ค. \x
์ด์ค์ผ์ดํ, \u
์ด์ค์ผ์ดํ ์ ์ด๋ ๊ฐ์ด ์ ํจํ ์ฝ๋ ํฌ์ธํธ์ธ์ง ํ์ธํ์ญ์์ค.
๋ฌธ์์์ ๋ฐ์ดํธ๋ก์ ๊ณ ์ ํ ๋งคํ์ด ์๊ธฐ ๋๋ฌธ์ ์ด ๋ชจ๋ ๊ฒ์ด ํ์ ์ด ํ๋ ์ผ ์ ๋๋ค. ๋ค์ ๋งํ์ง๋ง, ์ง์ ๋ ์ธ์ฝ๋ฉ์ด ์๋ค๋ ๊ฒ์ ์ธ์ด ์ฌ์ฉ์๊ฐ ๋ค๋ฅธ ๋น์ฌ์๋ก๋ถํฐ ๋ฐ์ดํธ ์ํ์ค๋ฅผ ์์ ํ ๋ ์ธ์ฝ๋ฉ์ ์ถ์ธกํ์ฌ ํ ์คํธ๋ก ๋๋๋ ค์ผ ํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์ํธ ์ด์ฉ์ฑ ์ธก๋ฉด์์ 0์ ์ป์ง๋ง UTF-8์ ์ฌ์ฉํ์ง ์๋ ํ๊ฒฝ(์ด์จ๋ ์ ๋์ฝ๋ ํ๊ฒฝ์์๋ง ์ฌ์ฉ)์ ๋ํด์๋ ์ฌ์ ํ ์ธ์์ ์ธ ์ฅ์ ๋ฌผ์ ์ธ์๋๋ค.
๋น์ ์ด ์ฌ์ฉํ๋ ๋ฌธ์๋ ์ ๋ ์ฝ๋์ ํฌํจ๋์ง ์๋ ๊ฒ์ ์กด์ฌํ๋ ํ๊ฒฝ์ ์ ์ ๊ธฐ์๊ฒ ํ ์ ์์ต๋๊น? ๋น์ ์ ์ด๋ก ์ ์ธ ์์์ฑ/ํ๊ฒฝ ๋ค์์ฑ ๊ด์ ์์ ์ด ์ ์ฅ์ ๋ฐฉ์ดํ๋ ค๊ณ ๊ณ์ ๋ ธ๋ ฅํ๊ณ ์์ง๋ง, ๋ง ๊ทธ๋๋ก ์ ๋์ฝ๋์ ์์ ์ ๋ชจ๋ ๋ฌธ์ ๋ฅผ ํฌํจ
์ด๋ค ๋ค์์ฑ์ ๋ณดํธํ๋ ค๊ณ ํฉ๋๊น? ํ๋์ ์๋ผ๋ ๋ณด๋ ๊ฒ์ด ์ข์ ๊ฒ์ ๋๋ค. :/
@tabatkins :
WebAssembly๋ ์ด๋ฆ์๋ ๋ถ๊ตฌํ๊ณ
์น์ผ๋ก ์ ํ๋ฉ๋๋ค.๋๋ ์ด๊ฒ์ด ์๋ฌด๊ฒ๋ ์๋ค๊ณ ๋ฐ๋ก ์์ ์ฝ๋ฉํธ์์ ์ธ๊ธํ์ต๋๋ค.
์น์ผ๋ก ํ ์ ์์ต๋๋ค. ๋น์ ์ ์ด ์ฃผ์ฅ์ ๊ณ์ ์ฌ์ฉํ๋ ค๊ณ ํ๊ณ , ๊ทธ๊ฒ์ ์ ๋ง
๋๋ฅผ ํผ๋์ค๋ฝ๊ฒ ํ๋ค. ๋ด๊ฐ ๋งํ๋ ๊ฒ์ ์น๊ณผ ์๋ฌด ๊ด๋ จ์ด ์์ต๋๋ค. ๋๋ ๋จ์ง
๋ฐฐ์ด ๊ตํ์ ์ค์ํ ์๋ก์ ์น์ ๊ฒฝํ์ ์ง์ ํฉ๋๋ค.
๋ด๊ฐ ๊ฐ์กฐํ๋ ค๊ณ ํ๋ ๊ฒ์ Wasn์ด
๊ฐ๋ฅํ ํ ํ๋์ ์ด๋ ์๋๋ ํ๋ซํผ. ๋ ํดํผ์๋ฉ๋ถํฐ ๊ณ์ ๋ง๋คํผ์ ํด
๋ชจ๋ ๊ฒ์ด ์ ๋์ฝ๋ ๋ฐ/๋๋ UTF-8์ด๊ณ ๋ชจ๋ ๊ฒ์ด
else๋ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค.
๋น์ ์ ๋น์ ์ด ์๊ฐํ๋ ์์ ์ ๋ง๋ค๊ณ ์์ง ์์ต๋๋ค - C
๋ฌธ์์ด ๋ฆฌํฐ๋ด์ด ASCII ์ธ์ฝ๋ฉ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ด์ฅ ์ธ์ฝ๋ฉ. (๋ค๊ฐ ์ํ๋ค๋ฉด
๋ค๋ฅธ ๋ชจ๋ ๊ฒ์ ์ ์ ํ ๋ฐ์ดํธ๋ฅผ ์ด์ค์ผ์ดํํ์ฌ ์์ผ๋ก ์ํํด์ผ ํฉ๋๋ค.
์ํ์ค.) ์ต์ C++์์๋ UTF-16 ๋ฐ UTF-8 ๋ฌธ์์ด์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ฆฌํฐ๋ด, ๊ทธ๋ฆฌ๊ณ ์ฌ์ ํ ์์์ ๋ฐ์ดํธ๋ฅผ ๋ฌธ์์ด์ ๋ฃ์ ์ ์์ง๋ง
\x ์ด์ค์ผ์ดํ, \u ์ด์ค์ผ์ดํ ์ ์ด๋ ๊ฐ์ด ์ ํจํ์ง ํ์ธํ์ญ์์ค
์ฝ๋ ํฌ์ธํธ.
์๋์, ๊ทธ๊ฒ์ ์๋ชป๋ ๊ฒ์
๋๋ค. C ์ฌ์์๋ ASCII๊ฐ ํ์ํ์ง ์์ต๋๋ค. ํ์ง๋ ์๋๋ค
ASCII์์ ํธํ์ฑ์ด ํ์ํฉ๋๋ค. ๊ฑฐ์ ์์์ "์์ค
๋ฌธ์ ์งํฉ" ๋ฐ ๋ฌธ์์ด ๋ฆฌํฐ๋ด์ ์ ์ฒด์ ๋ชจ๋ ๋ฌธ์๋ฅผ ํฌํจํ ์ ์์ต๋๋ค.
์ธํธ. ์ธ์ฝ๋ฉ์ ๊ดํ ์ ์ฝ์ ์์ผ๋ฉฐ ์ ์ ์ผ๋ก
๊ตฌํ ์ ์. C์์ ์คํ๋๋ ๊ตฌํ์ด ์์ต๋๋ค.
EBCDIC ํ๋ซํผ์ด๋ฉฐ ํ์ฌ ํ์ค์์ ์ฌ์ ํ ์ง์๋ฉ๋๋ค. GCC
๋ชจ๋ iconv ์ธ์ฝ๋ฉ์ผ๋ก ์์ค๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค(์ด ์ค ์ฝ 140
UTF-8 ์ธ์), ์๋ฅผ ๋ค์ด ์์์์์ ์ธ๊ธฐ ์๋ UTF-16์
๋๋ค. C++๋ ๋ค๋ฅด์ง ์์ต๋๋ค.
(๊ทธ๊ฒ์ @jfbastien ์ ์ง๋ฌธ์๋ ๋๋ตํด์ผ ํฉ๋๋ค.)
๊ณ ์ ํ ๋งคํ์ด ์๊ธฐ ๋๋ฌธ์ ์ด ๋ชจ๋ ๊ฒ์ด ํ์ํฉ๋๋ค.๋ฌธ์๋ฅผ ๋ฐ์ดํธ๋ก . ๊ทธ๊ฒ์ด ์ธ์ฝ๋ฉ ์ด ํ๋ ์ผ ์ ๋๋ค. ๋ค์ ๋งํ์ง๋ง, ๊ฐ์ง๊ณ ์์ง ์์
์ง์ ๋ ์ธ์ฝ๋ฉ์ ์ธ์ด ์ฌ์ฉ์๊ฐ ์์ ํ ๋
๋ค๋ฅธ ๋น์ฌ์์ ๋ฐ์ดํธ ์ํ์ค๋ ์ธ์ฝ๋ฉ์ ์ถ์ธกํด์ผ
๊ทธ๊ฒ๋ค์ ๋ค์ ํ ์คํธ๋ก ๋ง๋ญ๋๋ค.๋ค์ ๋งํ์ง๋ง ์ด _will_์ ํ๊ฒฝ๋ณ๋ก ์ ์ ํ๊ฒ ์ง์ ๋ฉ๋๋ค. ๋ ๋๊ตฐ๊ฐ
๋์ผํ ์ํ๊ณ์์ ์๋ํ๋ ๋ค๋ฅธ ๋๊ตฐ๊ฐ๋ก๋ถํฐ Wasm ๋ชจ๋์ ๋ฐ์ต๋๋ค.
๊ทธ๋ฌ๋ฉด ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ด๋ค JS ๊ฐ๋ฐ์๋ ์ ๊ฒฝ ์ธ ํ์๊ฐ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ๋๊ตฐ๊ฐ _๋ค๋ฅธ ์ํ๊ณ_์์ ๋ชจ๋์ ์์ ํ๋ ๊ฒฝ์ฐ
๊ฑฑ์ ํ ๋นํธํ์ฑ์ ๋ค๋ฅธ ์์ธ์ด ๋ง์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด
API, ๋ด์ฅ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฑ์ ๋ํ ๊ธฐ๋์น. ์ ๋น์ฌ์๋ ๋ค์์ ์ํํด์ผ ํฉ๋๋ค.
์ด์จ๋ ์ํธ ์ด์ฉ์ฑ ๊ฐ์ ์ ๋ํด ๋ช
์ํด์ผ ํฉ๋๋ค. ์ด๋ฆ์ ๋์
์ธ์ฝ๋ฉ์ ๊ฐ์ฅ ์์ ๋ฌธ์ ๊ฐ ๋ ๊ฒ์
๋๋ค.
์ํธ ์ด์ฉ์ฑ ์ธก๋ฉด์์ 0์ ์ป์ง๋ง ์ฌ์ ํ
UTF-8์ ์ฌ์ฉํ์ง ์๋ ํ๊ฒฝ(์ ๋์ฝ๋ ํ๊ฒฝ์์๋ง
๊ทธ๋๋).์ฌ์ฉํ๋ ํ๊ฒฝ์ ์ง์ ํด ์ฃผ ์๊ฒ ์ต๋๊น?
์ ๋์ฝ๋์ ํฌํจ๋์ง ์์ ๋ฌธ์? ๋น์ ์ ์ด๊ฒ์ ๋ฐฉ์ดํ๋ ค๊ณ ๊ณ์
์ด๋ก ์ ์๋/ํ๊ฒฝ๋ค์์ฑ ๊ด์ ์์ ์ ์ฅ์ ์ทจํ์ง๋ง,
๋ง ๊ทธ๋๋ก ์ ๋์ฝ๋์ ์์ ์ ๋ชจ๋ ๋ฌธ์ . ์๊ฒฉ์ผ๋ก ๋ง๋ค ์ ์๋ ์ ์ผํ ๋ฌธ์ ์งํฉ์ ๋๋ค.
๊ทธ๋ ๊ฒ ํ๊ธฐ ์ํ ์ ๋ขฐํ ์ ์๋ ์ฃผ์ฅ๊ณผ ์ ๋์ฝ๋ ๋ฌธ์๋ฅผ ์ฌ์ฉํ ๋
์ค์ ํ๋ฉด UTF-8์ด ์ ํธ๋๋ ๋ฒ์ฉ ์ธ์ฝ๋ฉ์ ๋๋ค.์ด๋ค ๋ค์์ฑ์ ๋ณดํธํ๋ ค๊ณ ํฉ๋๊น? ๋ณด๊ธฐ์๋ ์ข์ ๊ฒ์ด๋ค.
ํ๋์ ์. :/์๋ฅผ ๋ค์ด ์๋ฒ ๋๋ OS ๋ชฉ๋ก์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. https://en.wikipedia.org/wiki/
๋ฒ์ฃผ:Embedded_operating_systems
๊ทธ๋ค ์ค ์ผ๋ถ๋ ์๋ง๋ UTF-8์ ์ฌ์ฉํ๊ณ ์ผ๋ถ๋ ์ฌ์ฉํ์ง ์์ ๊ฒ์ ๋๋ค. ์ผ๋ถ๋ Wasm์ ์ฉ๋๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
๋๋ถ๋ถ์ ๊ทธ๋ ์ง ์์ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ๋ ๋ง๋๋ ๊ฒ์ ์ฐ๋ฆฌ์๊ฒ ์๋ฌด๋ฐ ์ด์ ์ด ์์ต๋๋ค.
๊ทธ๋ค์๊ฒ ํธ๋ฆฌํฉ๋๋ค.
๊ทธ ๋ชฉ๋ก์์ ์์ง ์ต์ํ์ง ์์ ํญ๋ชฉ ์ค ํ๋๋ DOS์
๋๋ค. ๊ฐ์ด
์ฐ๋ฆฌ ๋ชจ๋๊ฐ ์ฃฝ๋ ๊ฒ์ ์ข์ํ์ง๋ง DOS ์์คํ
์ ์ฌ์ ํ โโํ๋ฐํ๋ฉฐ ์ฌ์ฉํฉ๋๋ค.
OEM.
@jfbastien :
๊ทธ๋์ ๋์ํฉ๋๋ค. ์ด ์ ์์ ๊ทํ์ ๋ง๋ก "๊ตฌ๋ฌธ์ ์ ์ํ์ง ์๊ณ
์๋ฏธ๋ก ". ์ด๋ ๋งค์ฐ ์ผ๋ฐ์ ์ธ ์ผ์ ๋๋ค. ์ค์ ๋ก WebAssembly์
ํ์ฌ ๊ธธ์ด + ๋ฐ์ดํธ ์ฌ์์ ์ด๋ฏธ ์ด ์์ ์ ์ํํฉ๋๋ค!
๋ด๊ฐ ๋ชจ๋ ์๊ณ ์๋ ๊ทธ๋ฐ ์ผ์ ๋๋ฌธ ๊ฒฝ์ฐ๋
๊ตฌํ๋ณ ๋์์ ์ํ ํ์ถ๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ๊ทธ๊ฑด
๋ํ ์ ์ผํ ํฉ๋ฆฌ์ ์ธ ์ฌ์ฉ ์ฌ๋ก์
๋๋ค. ํ์ง๋ง ์ฌ๊ธฐ์๋ ์๋ฏธ๊ฐ ์์ต๋๋ค. ๋ง์ฝ ๋๋ผ๋ฉด
๋ฌธ์์ด์ ๋ํ ์ด๋ฌํ ํ์ถ ํด์น๋ฅผ ์ ๊ณตํ๋ ค๋ ๊ฒฝ์ฐ ์ ๊ท์ฐฎ๊ฒ ์๊ตฌํฉ๋๊น?
UTF-8, ๋ฐ์ดํธ ๋ฌธ์์ด "๊ตฌ๋ฌธ"์ ํ์ฉํ๋ ๋์ ? ์๋ ๊ตฌ๋ฌธ์
๋๋ค.
์ธ์์ด๋ธ๋ฌ๊ฐ ์๋ ๋์ค์์ด๋ธ๋ฌ๋ก์์ ์๋ฏธ.
์ฅ์ ๋ฌผ์ด ๋ฌด์์ธ์ง ์ดํดํ๊ณ ์ถ์ต๋๋ค. ๋ ์ ๋ง ํ๋๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
>
์ผ๋ถ ํด๋ผ์ด์ธํธ๋ ๋จ์ํ ๋ชจ๋ ๋ฐ์ดํธ ๊ฐ์ ์ฌ์ฉํ ์ ์์ง๋ง
์ํ๊ณ์์ ์ฌ์ฉํ์ง ์๋ ์ค๋ณต UTF ์ธ์ฝ๋ฉ. ๊ทธ ๋ชจ๋
๊ทธ๋ค์ ๋๊ตฌ ์ฒด์ธ์ ์๋ ๋๊ตฌ๋ ์ด์ ๋ํด ๊ณ ๋ฏผํด์ผ ํฉ๋๋ค. ๊ทธ๊ฒ์ ๊ทธ
์ถ๊ฐ ์ค๋ฅ ์ฌ๋ก(๋ฒ์ ๊ฐ์ ๋ฒ์ด๋จ)๋ฅผ ์์ฑํฉ๋๋ค.
๊ทธ๋ ์ง ์์ผ๋ฉด ๊ทธ๋ค์ ์ํด ์กด์ฌํฉ๋๋ค.
๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ์ง๋ฌธํด ๋ณด๊ฒ ์ต๋๋ค. (์ํ๊ณ์์) ์ด์ ์ ๋ฌด์์
๋๊น?
๋ ์ ๋ง ํ๋๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
@tabatkins
๊ตฌ๋ถ์ ์ด ์ด๋์ ์๋์ง ์ดํดํ๊ณ ์ถ์ต๋๋ค.
๋ช
ํํ๊ฒ ํ๊ธฐ ์ํด ์กฐํฉ์์ ์ ํจํ์ง ์์์ง ์ฌ๋ถ์ ๊ด๊ณ์์ด ์ฝ๋ ํฌ์ธํธ์ utf-8 ์ธ์ฝ๋ฉ๋ง ์ ์ํ๊ณ ์์ต๋๋ค(10์ค์ ์ฝ๋๋ก ์ํํ ์ ์์).
์๋ฅผ ๋ค์ด ๊ตต๊ฒ ํ์๋ ๋๋ฌธ์๋ ๋ค์์ ๋ํ๋ด๊ธฐ ์ํด ์ฌ์์์ ์ฌ์ฉ๋ ์ ์์ต๋๋ค. Wasm์ ๊ตฌํํ๊ธฐ ์ํด ๊ตญ์ ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์ํ๋ค๊ณ ์๊ฐํ๋ค๋ฉด ๋ญ๊ฐ ์๋ชปํ๊ณ ์๋ ๊ฒ์
๋๊น?
๋ชฉํ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ง๋ฌธ?
์ด๊ฒ์ด UTF-8๊ณผ ์ถฉ๋ํ๋ Latin1๊ณผ ๊ฐ์ ์ธ์ฝ๋ฉ์ ์ ๊ทน์ ์ผ๋ก ์ฅ๋ คํ๋ ๋ชฉํ๋ฅผ ์๋ฏธํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ์ฆ, ๊ทธ๊ฒ์ ๋ฐฉ์ถํ๋ ํด์ฒด์ธ์ ๋น์ค์์ผ ๊ฒ์ด๊ณ ์ ์ฌํ๊ฒ ๋ฐ์๋ค์ด๋ ๊ตฌํ์ด ๋ ๊ฒ์ ๋๋ค.
๋๋ ์น์ด ์ญ์ฌ์ ์ผ๋ก ์ด์ ์ ์ฌ์ ์ธ์ฝ๋ฉํ๋ ์์ญ์ ๋นํธ๋ฅผ ๊ฒน์น๊ฒ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ด ๊ณต๊ฐ์ ํตํฉํ๋ ๋ฐ ์ด๋ ค์์ ๊ฒช์์ต๋๋ค. ๋ฐ๋ฉด์ ๋ด ์ธ์์ UTF-8์ด ์ ํ ๋น์ฉ์ด ASCII๊ฐ ์๋ ์ฌ๋๋ค์ ์ํด ๋ถ๊ท ํ์ ์ผ๋ก ๋ฐ์ํ๊ณ ์ผ๋ถ ์ง์ญ์๋ ๋ ๋ง์ ๋ฒ ์ดํฌ์ธ์ด ์๋ค๋ ๊ฒ๊ณผ ๊ฐ์ ๊ฒ์ ์ค์ ํ๋ค๋ ๊ฒ์ ๋๋ค. ์ ๋์ฝ๋ ์ ํ์ ์ค์ฉ์ ์ธ ํ์ฐ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. (๊ทธ๋ฆฌ๊ณ ๊ฑฐ์ ์๋ฃ). ์ ๋์ฝ๋์ ๊ด๋ จ๋ ์ผ๋ถ ์ ์น์ ๋ฐ ์ง์ญ์ ๋ฌธ์ ๊ฐ ์น์์ ํด๊ฒฐ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๋ ์ค์ ์ง์ค์ ๋ฌธ์/์ํฐํฐ๊ฐ ์์ต๋๊น?
@rossberg-chromium
๋ช ํํ๊ฒ ํ๊ธฐ ์ํด ์กฐํฉ์์ ์ ํจํ์ง ์์์ง ์ฌ๋ถ์ ๊ด๊ณ์์ด ์ฝ๋ ํฌ์ธํธ์ utf-8 ์ธ์ฝ๋ฉ๋ง ์ ์ํ๊ณ ์์ต๋๋ค(10์ค์ ์ฝ๋๋ก ์ํํ ์ ์์).
์, ์๋ชป๋ ์กฐํฉ์ด ์๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค. ๊ธฐ์ ์ ์ผ๋ก UTF-8๋ก ์ธ์ฝ๋ฉํ ์ ์๋ ์ผ๋ถ ๊ฐ๋ณ ์ฝ๋ํฌ์ธํธ(UTF-16 ๋๋ฆฌ์ฉ์ผ๋ก ์์ฝ๋ ์ฝ๋ํฌ์ธํธ)๊ฐ ์์ต๋๋ค. ์ฆ, ์ ์ฒด ๋ฐ์ดํธ ์ ์ด๊ฐ ๋ฐ๋์งํ๋ค๋ฉด WTF-8 ์ธ์ฝ๋ฉ ์ด ์กด์ฌํ์ง๋ง ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ๋ชฉํ๋ก "์, ์ด ๋ฌธ์์ด์ด ๋๋๋ก ๋ฌธ์์ด์ด ์๋ ์์์ ๋ฐ์ดํฐ๋ฅผ ์ค์ ๋ก ํฌํจํ๋๋ก ํ์ฉํ๊ณ ์ถ์ต๋๋ค"์ ๋ํด ๋งค์ฐ ๋ช ์์ ์ด์ด์ผ ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ์ชฝ์ผ๋ก ๊ฐ๋ค. WTF-8(๋ฐ WTF-16) ํ์์ UTF-* well-formedness๋ฅผ ์ํํ๋ ๋ฐ ํ์ ํธํ์ฑ ์ ์ฝ์ด ์๋ ํ๊ฒฝ์ ๋ํ ๊ณต์ ์ฌ์์ ์ ๊ณตํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค.
์๋ฅผ ๋ค์ด ๊ตต๊ฒ ํ์๋ ๋๋ฌธ์๋ ๋ค์์ ๋ํ๋ด๊ธฐ ์ํด ์ฌ์์์ ์ฌ์ฉ๋ ์ ์์ต๋๋ค. Wasm์ ๊ตฌํํ๊ธฐ ์ํด ๊ตญ์ ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์ํ๋ค๊ณ ์๊ฐํ๋ค๋ฉด ๋ญ๊ฐ ์๋ชปํ๊ณ ์๋ ๊ฒ์ ๋๊น?
์, i18n์ ์ด๋ค ๋ฐฉ์, ๋ชจ์ ๋๋ ํํ๋ก๋ ํ์ํ์ง ์์ต๋๋ค. ์๋ฅผ ๋ค์ด CSS๋ ๊ธฐ๋ณธ์ ์ผ๋ก UTF-8์ ์ฌ์ฉํ๋ฉฐ ASCII ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ ๊ฒ์ ํ์ฉํ ๋ ์์ ์ฝ๋ํฌ์ธํธ ๋น๊ต/์ ๋ ฌ์ ์ํํฉ๋๋ค. Wasm์ด ์ด ์ด์์ผ๋ก ๋์๊ฐ ์ด์ ๋ ์์ต๋๋ค.
์ด๊ฒ์ด ๋ ๋ง์ ๊ฒ์ฆ์ ๋ํ ์๊ตฌ ์ฌํญ์ด ๋ ์ํ์ด ์์ต๋๊น? ์ด ๋ถ์ผ์์ ์ ์ ํต์ฌ ๊ด์ฌ์ฌ๋ ICU๋ฅผ ์์กด์ฑ์ผ๋ก ์ผํค๋ ๊ฒ์ด ํญ์ ๋ถํฉ๋ฆฌํ ๋ถ๋ด์ด ๋ ๊ฒ์ด๋ผ๋ ๊ฒ์ ๋๋ค.
์น ํ๋ซํผ์ ์ง๊ธ๊น์ง ๋ฒ ์ด ์ด๋ฆ์ ์ถ๊ฐ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ๋ถ๊ณผํ ํ์๊ฐ ์์์ต๋๋ค. ๋ด ๊ฒฝํ์ ๋ฐ๋ฅด๋ฉด ๊ฒฐ์ฝ ํ์ํ์ง ์์ ๊ฒ์ ๋๋ค.
๋๋ ์ด๊ฒ์ด UTF-8๊ณผ ์ถฉ๋ํ๋ Latin1๊ณผ ๊ฐ์ ์ธ์ฝ๋ฉ์ ์ ๊ทน์ ์ผ๋ก [dis-ed]์ฉ๊ธฐํ๋ ๋ชฉํ๋ฅผ ์๋ฏธํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ์ฆ, ๊ทธ๊ฒ์ ๋ฐฉ์ถํ๋ ํด์ฒด์ธ์ ๋น์ค์์ผ ๊ฒ์ด๊ณ ์ ์ฌํ๊ฒ ๋ฐ์๋ค์ด๋ ๊ตฌํ์ด ๋ ๊ฒ์ ๋๋ค.
์, ๊ทํ์ ๋จ์ด์ "DIS couraging"๋ก ๋ณํ. ^_^ ์์ ์ ์์ฐ์์ ์๋น์๊ฐ ๋ค๋ฅธ ๋์ ์ด ๋ฌด์์ ํ๋์ง ์ถ์ธกํ ํ์ ์์ด ๋ฐ์ดํธ ์ํ์ค๋ก/์์ ๋ฌธ์์ด์ ์์ ์ ์ผ๋ก ์ธ์ฝ๋ฉ ๋ฐ ๋์ฝ๋ฉํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ ์ด์ ๊น์ง ๋ฐ์ํ ๋ชจ๋ ํ๊ฒฝ์์ ๋์ฐํ ๊ณ ํต์ด์์ผ๋ฉฐ ํ์ฌ ๋๋ฆฌ ์ฑํ๋ ์๋ฃจ์ ์ด ์์ต๋๋ค.
๋๋ ์น์ด ์ญ์ฌ์ ์ผ๋ก ์ด์ ์ ์ฌ์ ์ธ์ฝ๋ฉํ๋ ์์ญ์ ๋นํธ๋ฅผ ๊ฒน์น๊ฒ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ด ๊ณต๊ฐ์ ํตํฉํ๋ ๋ฐ ์ด๋ ค์์ ๊ฒช์์ต๋๋ค. ๋ฐ๋ฉด์ ๋ด ์ธ์์ UTF-8์ด ์ ํ ๋น์ฉ์ด ASCII๊ฐ ์๋ ์ฌ๋๋ค์ ์ํด ๋ถ๊ท ํ์ ์ผ๋ก ๋ฐ์ํ๊ณ ์ผ๋ถ ์ง์ญ์๋ ๋ ๋ง์ ๋ฒ ์ดํฌ์ธ์ด ์๋ค๋ ๊ฒ๊ณผ ๊ฐ์ ๊ฒ์ ์ค์ ํ๋ค๋ ๊ฒ์ ๋๋ค. ์ ๋์ฝ๋ ์ ํ์ ์ค์ฉ์ ์ธ ํ์ฐ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. (๊ทธ๋ฆฌ๊ณ ๊ฑฐ์ ์๋ฃ). ์ ๋์ฝ๋์ ๊ด๋ จ๋ ์ผ๋ถ ์ ์น์ ๋ฐ ์ง์ญ์ ๋ฌธ์ ๊ฐ ์น์์ ํด๊ฒฐ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๋ ์ค์ ์ง์ค์ ๋ฌธ์/์ํฐํฐ๊ฐ ์์ต๋๊น?
์, ํ์คํ ์ ํ์ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค. HTML์ ์ฌ์ ํ โโback-compat์ผ๋ก ์ธํด Latin-1๋ก ๊ธฐ๋ณธ ์ค์ ๋์ด์ผ ํ๋ฉฐ, ์ฌ์ ํ ์ธ์ด๋ณ ์ธ์ฝ๋ฉ(๋๋ถ๋ถ Shift-JIS, ์ผ๋ณธ์ด ์ธ์ฝ๋ฉ)์ ์ ํธํ๋ ์น ์ฝํ ์ธ ์ ์ผ๋ถ๊ฐ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ธ๊ณ์ ๋๋ค์๋ ์ง๋ 20๋ ๋์ ์ ํํ์ผ๋ฉฐ ์ ํ์ ์ด์ ์ด๋ ์ ๋ ์๋ฃ๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
"UTF-8์ด ASCII๊ฐ ์๋ ์ฌ๋๋ค์๊ฒ ๋ถ๋ด์ ์ค๋ค"๋ ๊ฒ์ ์ ํดํ์ง๋ง ์ค๋ซ๋์ ๊ฑฐ์ ์์ ํ ์ฌ์ค์ด ์๋ ์๋ฌธ์ด์์ต๋๋ค. ๋๋ถ๋ถ์ ์ ๋ฝ ์ธ์ด๋ ์ฒ์์ ๋๋ถ๋ถ์ ASCII ์ํ๋ฒณ์ ํฌํจํ๋ฏ๋ก ๋๋ถ๋ถ์ ํ ์คํธ๋ ๋จ์ผ ๋ฐ์ดํธ ์ํ์ค์ด๋ฉฐ UTF-16๋ณด๋ค ์๊ฒ ๋๋ฉ๋๋ค. ๋ณ์๊ณผ ๊ฐ์ ๋ฌธ์ ์ฒด๊ณ์๋ ๋์ผํ๊ฒ ์ ์ฉ๋ฉ๋๋ค. CJK ์ธ์ด๋ ๋๋ถ๋ถ 3๋ฐ์ดํธ UTF-8 ์์ญ์ ์ฐจ์งํ์ง๋ง ํนํ ๋งํฌ์ ์ธ์ด ๋๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ๋ง์ ์์ ASCII ๋ฌธ์๋ ํฌํจํ๋ฏ๋ก ์ผ๋ฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ด UTF-8์ ๋ํด ๋ ์๊ฑฐ๋ ์ ์ฌํ ์ธ์ฝ๋ฉ ํฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ์ญ์์ค. UTF-16 ๋๋ ํน์ ์ธ์ฝ๋ฉ.
UTF-8์ด ์ค์ ๋ก ํน์ ์ธ์ฝ๋ฉ๋ณด๋ค ๋ ๋ง์ ๊ณต๊ฐ์ ์ฐจ์งํ๋ ๊ฒ์ CJK ๋๋ ํค๋ฆด ์๋ชจ์ ๊ฐ์ ๋นASCII ์ํ๋ฒณ์ผ๋ก ๋ ๋ค๋์ ์์ ํ ์คํธ์๋ง ํด๋น๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ ํ๋ ๋๋ผ์ด๋ธ ์ฉ๋์ด ๋ฉ๊ฐ๋ฐ์ดํธ ๋จ์ ๋ก ์ธก์ ๋๊ณ ํ ์คํธ ํ์ผ ํฌ๊ธฐ๊ฐ ์ฝ๊ฐ ์ฆ๊ฐํด๋ ์ค์ ๋ก ์๋นํ ์์ค์ด ๋ ์ ์์๋ 90๋ ๋ ์ด๋ฐ ์ ๋ํ ์ฐ๋ ค์์ต๋๋ค. ์ด๊ฒ์ ๊ฑฐ์ 20๋ ๋์ ๋ฌธ์ ๊ฐ ๋์ง ์์์ต๋๋ค. ํฌ๊ธฐ ์ฐจ์ด๋ ์ด์ ์์ ํ ์ค์ํ์ง ์์ต๋๋ค.
"์ ๋์ฝ๋ ์ ํ"์ ์ด๋ฏธ ๋ณดํธ์ ์ผ๋ก ๋ฐ์ํ์ต๋๋ค. ์์ฆ UTF-8๋ก ์ธ์ฝ๋ฉํ ํ์๊ฐ ์๋ ํ ์คํธ ํ์์ ๋์ฐํ๊ณ ์ญ์ฌ์ ์ธ ์ค์๋ฅผ ์ ์ง๋ฅด๊ณ ์์ต๋๋ค.
์ด ๋ด์ฉ์ ์ค๋ช ํ๋ ํน์ ๋ฌธ์๊ฐ ์๋์ง ํ์คํ์ง ์์ง๋ง ์ด๋๊ฐ์ ์์ ๊ฒ์ ๋๋ค. ^_^
๋ชฉํ๊ฐ ๋ฐ์ด๋๋ฆฌ ์ฌ์์ ๊ฐ๋ฅํ ํ ์์ํ๊ฒ ์ ์งํ๋ ๊ฒ์ด๋ผ๋ฉด ์ด๋ฆ์ ์์ ํ ์ ๊ฑฐํฉ์๋ค. ์ด์จ๋ ๋ชจ๋ ๋ด๋ถ ์ฐธ์กฐ๋ ์ธ๋ฑ์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค.
๋์ UTF-8์ด ํ์ํ JavaScript ์ฌ์์ ํ์ ์ฌ์ฉ์ ์ ์ ์น์ ์ ์ถ๊ฐํ์ญ์์ค. @rossberg-chromium์ด ์์ํ๋ ์๋น์ํธ ์๋์ ๋ฉ์ธํ๋ ์๊ณผ ๊ฐ์ ๋ค๋ฅธ ํ๊ฒฝ์์๋ ์์ฒด ์ฌ์ฉ์ ์ ์ ์น์ ์ ์ ์ํ ์ ์์ต๋๋ค. ๋จ์ผ WASM ํ์ผ์ ๋ ์ฌ์ฉ์ ์ ์ ์น์ ์ ๋ชจ๋ ์ ๊ณตํ์ฌ ๋ ํ๋ซํผ์ ๋ชจ๋ ์ง์ํ ์ ์์ต๋๋ค. ์ฌ์ฉ์ ์ง์ ๋๊ตฌ๊ฐ ๋ ์ธ๊ธฐ ์๋ ๊ฒ์ ๋ณํํ์ฌ ๋ชจํธํ ํ๋ซํผ์ ๋๋ฝ๋ ์น์ ์ ์์ฑํ๋ ๊ฒ์ ๋น๊ต์ ๊ฐ๋จํฉ๋๋ค.
๋ชฉํ๊ฐ ๋ฐ์ด๋๋ฆฌ ์ฌ์์ ๊ฐ๋ฅํ ํ ์์ํ๊ฒ ์ ์งํ๋ ๊ฒ์ด๋ผ๋ฉด ์ด๋ฆ์ ์์ ํ ์ ๊ฑฐํฉ์๋ค. ์ด์จ๋ ๋ชจ๋ ๋ด๋ถ ์ฐธ์กฐ๋ ์ธ๋ฑ์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค.
๊ฐ์ ธ์ค๊ธฐ/๋ด๋ณด๋ด๊ธฐ๊ฐ ์๋ํ๋ ๋ฐฉ์์ ์ฌ์์ ํ ๊ฒ์ ๋๋ค. ๊ทธ๊ฒ์ ํ ์ด๋ธ์ ์์ผ๋ฉฐ ์ด ๋ฌธ์ ์ ๋ค๋ฅธ ๋ฌธ์ ์์ ์ ์๋์ด์ผ ํฉ๋๋ค.
@bradnelson , AFAICS, ํน์ ์ธ์ฝ๋ฉ์ ๊ท์ ํ์ง๋ง ๋ฌธ์ ์งํฉ์ ์์
๋ ์ธ๊ณ์ ์ต์
์ ๊ฒฐํฉํฉ๋๋ค.
๋ฉด์์ ์ค์ง์ ์ธ ์ด์ ์ด ์๋ ์ ํ, ๋ณต์ก์ฑ ๋ฐ ์ค๋ฒํค๋
์ํธ ์ด์ฉ์ฑ ๋๋ ์ฌ์ ํ ์์ ์ด ๋ฌด์์ธ์ง ํผ๋์ค๋ฌ์ํ๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
@rossberg-chromium ์ฌ๊ธฐ์์ ์ถ๊ตฌํ๋ ์ฃผ์ ์ด์ ์ ์ถ์ธก์ ๋ถ๋ด์์ ๋๊ตฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋์ด์ฃผ๋ ๊ฒ์ ๋๋ค.
์ฌ๊ธฐ์์ ์ถ๊ตฌํ๋ ์ฃผ์ ์ด์ ์ ์ถ์ธก์ ๋ถ๋ด์์ ๋๊ตฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋์ด์ฃผ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋ ผ์๋๋ ์์ ๋ณํ(UTF-8 ๋ WTF-8 ๋ฑ)์ ์ต์ ์ ๊ฒฝ์ฐ์๋ ์๋ ๊ฒ๋ณด๋ค ๋์ ๊ฒ์ ๋๋ค. "์ด ๋ฐ์ดํธ๋ฅผ ๋ฌธ์ ๊ทธ๋๋ก ํธ๋์ค์ฝ๋ฉํ ์ ์๋ค๊ณ ํ์ ํฉ๋๋ค."๊ฐ "์ด ๋ฐ์ดํธ๋ windows-1252์ฒ๋ผ ๋ณด์ ๋๋ค. ์๋ํด ๋ณด๊ฒ ์ต๋๋ค."๋ณด๋ค ๋ซ์ต๋๋ค. ์ถ์ธก์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ฌ์ด ๊ฒ์ผ๋ก ์๋ ค์ ธ ์์ผ๋ฉฐ ์ฌ๊ธฐ์์ ์ถ๊ตฌํ๋ ์ฃผ์ ์ด์ ์ ์ถ์ธก์ ๋ถ๋ด์์ ๋๊ตฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋์ด์ฃผ๋ ๊ฒ์ ๋๋ค.
@sunfishcode , ์ด๋ป๊ฒ? ๋๋ ์์ง๋ ๊ธธ์ ์์๋ค.
๊ทธ๋์ ์ฌ๊ธฐ์ ๊ตฌ์ฒด์ ์ธ ์๋๋ฆฌ์ค๊ฐ ์์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ๋ค๋ฅธ ํ๋ซํผ์ ์๊ณ ๋ด๊ฐ ๋น์ ์๊ฒ ๋ชจ๋์ ์ ๋ฌํ๋ ค๊ณ ํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ๋ด ํ๋ซํผ์ด EBCDIC์ ๋น์ ์ ASCII๋ฅผ ์ฌ์ฉํ๋ค๊ณ ๊ฐ์ ํด๋ณด์. ํ์ฌ ์ ์์ ๋ฐ๋ฅด๋ฉด ์์ ํ ํฉ๋ฒ์ ์ ๋๋ค. ๊ทธ๋ฌ๋ ๋ด ๋ชจ๋์ ๋น์ ๊ณผ ๋น์ ์ ๋๊ตฌ ์ฒด์ธ์ ์์ ํ ์ธ๋ชจ๊ฐ ์์ต๋๋ค.
์ด ๋ ์ธ์ฝ๋ฉ์ ๋ชจ๋ 7๋นํธ์ด๋ฏ๋ก UTF-8์ ๊ทธ๋ฆผ์ ์ ๋ ฅ์กฐ์ฐจ ๋์ง ์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด UTF-8์ ๋ฌด์์ ํ ์ด๋ธ์ ๊ฐ์ ธ์ฌ๊น์? ๊ธ์, ๋๋ ๋ด๊ฐ ์ป๋ ์ ์์๋ ๋ฌธ์์ด์ "๋์ฝ๋ฉ"ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ด๊ฐ ์๋ ํ ๊ฒฐ๊ณผ๋ 31๋นํธ ๊ฐ์ _๋ ๋ค๋ฅธ ๋ถํฌ๋ช ํ ์ด์ง ์ผ๋ฃฉ_์ ๋๋ค. ์ด๋ค ์ ๋ณด๋ ์ ๊ณตํ์ง ์์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ ๋ด ์์ ์ ๋ฌธ์์ด๊ณผ ๊ด๋ จ์ํค๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ฆ ๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์ ๋ด๊ฐ ์ ์ ์๋ ๋ฌธ์์ด์ ๋์ฝ๋ฉํ๋ ๋ฐ ๊ท์ฐฎ๊ฒ ํด์ผ ํฉ๋๊น? ๊ธ์, _ํ์ง ์์ ๊ฒ์ ๋๋ค_! 8๋นํธ ๊ฐ์ ์๋ ์ด์ง ๋ฉ์ด๋ฆฌ๋ก ์์ ํ๊ณ ๊ณต๊ฐ๊ณผ ์ฃผ๊ธฐ๋ฅผ ์ ์ฝํ ์ ์์ต๋๋ค. ํ์ง๋ง ์ฌ์์์๋ ์ฌ์ ํ ์ธ์ฝ๋ฉ์ ํ์ ํ๊ฒ ๊ฒ์ฆํ๊ธฐ ์ํด ์ฌ์ดํด์ ์๋นํด์ผ ํฉ๋๋ค.
์ด ๋ชจ๋ ๊ฒ์ ๊ณ ๋ คํ ๋, ์ด ํน์ ์ ์์ ์ฑํํจ์ผ๋ก์จ (ํต์ฌ) Wasm ๋๋ ๋๊ตฌ๊ฐ ์ป๋ ๊ฒ์ ๋ฌด์์ ๋๊น?
AFAICS, ํน์ ์ธ์ฝ๋ฉ์ ๊ท์ ํ์ง๋ง ๋ฌธ์ ์งํฉ์ ์ง์ ํ์ง ์์
๋ ์ธ๊ณ์ ์ต์ ์ ๊ฒฐํฉํฉ๋๋ค.
๋ฉด์์ ์ค์ง์ ์ธ ์ด์ ์ด ์๋ ์ ํ, ๋ณต์ก์ฑ ๋ฐ ์ค๋ฒํค๋
์ํธ ์ด์ฉ์ฑ ๋๋ ์ฌ์ ํ ์์ ์ด ๋ฌด์์ธ์ง ํผ๋์ค๋ฌ์ํ๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ฐ๋ฆฌ๋ ํ์คํ ๋ฌธ์ ์งํฉ์ธ ์ ๋์ฝ๋ ๋ฌธ์ ์งํฉ์ ๋ถ๊ณผํ๊ณ ์์ต๋๋ค. JF๋ ์ด์ ์ ๋งค์ฐ ํผ๋์ค๋ฌ์ด ํํ์ ์ฌ์ฉํ์ต๋๋ค. ์ฃผ์๋ฅผ ๊ธฐ์ธ์ด์ง ๋ง์ญ์์ค. ๊ทธ๋ ๋ค๊ณ ํด์ ์ค์ ๋ก ์ด๋ฅผ ์ํํ๊ธฐ ์ํด Wasm์ ๊ฒ์ฌ๋ฅผ ์ถ๊ฐํด์ผ ํ๋ค๋ ์๋ฏธ๋ ์๋๋๋ค. ๋์ฝ๋๋ ์ผ๋ฐ์ ์ผ๋ก ์ ํจํ์ง ์์ ๋ฌธ์๋ฅผ ์ฒ๋ฆฌํ ์ ์์ ๋งํผ ์ถฉ๋ถํ ๊ฐ๋ ฅํฉ๋๋ค. (์๋ฅผ ๋ค์ด ์น์ ์ผ๋ฐ์ ์ผ๋ก U+FFFD REPLACEMENT CHARACTER๋ก ๋์ฒดํฉ๋๋ค.)
๊ทธ๋์ ์ฌ๊ธฐ์ ๊ตฌ์ฒด์ ์ธ ์๋๋ฆฌ์ค๊ฐ ์์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ๋ค๋ฅธ ํ๋ซํผ์ ์๊ณ ๋ด๊ฐ ๋น์ ์๊ฒ ๋ชจ๋์ ์ ๋ฌํ๋ ค๊ณ ํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ๋ด ํ๋ซํผ์ด EBCDIC์ ๋น์ ์ ASCII๋ฅผ ์ฌ์ฉํ๋ค๊ณ ๊ฐ์ ํด๋ณด์. ํ์ฌ ์ ์์ ๋ฐ๋ฅด๋ฉด ์์ ํ ํฉ๋ฒ์ ์ ๋๋ค. ๊ทธ๋ฌ๋ ๋ด ๋ชจ๋์ ๋น์ ๊ณผ ๋น์ ์ ๋๊ตฌ ์ฒด์ธ์ ์์ ํ ์ธ๋ชจ๊ฐ ์์ต๋๋ค.
์์ญ ๋ ์ ์ค๋๋ ์์คํ ์ด ๊ด๋ จ์ฑ์ด ์์ ๋ฟ๋ง ์๋๋ผ ๋๋ฌด ๊ด๋ จ์ฑ์ด ๋์ ๋์ผํ ์์ญ ๋ ๋์ ๊ณ ํต์ ์ธ์ฝ๋ฉํ๋ ๊ฒ์ ๋ํด ์ฐ๋ฆฌ๊ฐ ๋ฐฐ์ด ๋ชจ๋ ๊ฒ์ ๋ฐ๋ํ๋ ๊ฒฐ์ ์ ๋ด๋ฆฌ๋ ๊ฒ์ ์ ๋นํํ๋ ์ฒํ๋ ๊ฒ์ ์ค๋จ ํด์ผ ํฉ๋๋ค. ์น ์ด์ ๋ธ๋ฆฌ๊ฐ ๊ณ ๋ ๋ฉ์ธํ๋ ์๊ณผ ๋ํํ ๋ ํธ์์ฑ์ ๊ทน๋ํํ๊ธฐ ์ํด ์ค์ค๋ก๋ฅผ ๋นํ๋ฉด์ ํ ์คํธ ๋ฐ์ดํฐ๋ฅผ ์์ ์ ์ผ๋ก ์ ๋ฌํ ์ ์๋ค๋ ์ธ๊ณ์ ๋ค๋ฅธ ๋ชจ๋ ์ฌ๋๋ค์ ์ด์ ์ ๋ฌด์ํ๋ค๋ ์ฃผ์ฅ์ ํ๋ ์ฌ๋์ ์๋ฌด๋ ์์ต๋๋ค. ๋น์ ์ ์ธ์ด๋ฅผ ์์์ํค๊ณ ์ฌ์ฉ์์ ์ถ์ 99.9%(๋งค์ฐ ๋ณด์์ ์ธ ์ถ์ ์น๋ก)๋ฅผ ๋ ์ด๋ ต๊ฒ ๋ง๋ค ๊ฒ์ ๋๋ค.
๋ง์ ๋ค๋ฅธ ์์คํ ์ด ์ด ๋ชจ๋ ํผ๋์ ๊ฒช์์ต๋๋ค. ์ธ์ฝ๋ฉ ์ ์์ ์ฌ๋ฏธ๊ฐ ์์์ต๋๋ค. ๊ทธ๋ค์ ๋ง์ ๋๊ณผ ๋ง์ ์๊ฐ์ ๋ญ๋นํ๊ณ ๋ง์ ํ ์คํธ๊ฐ ์์๋์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ ์ ์์ ๋๋์ต๋๋ค. ์ ๋์ฝ๋๊ฐ ๋ง๋ค์ด์ง๊ณ ๊ณตํฌ๋์ด ์ ์ธ๊ณ์ ๊ฑธ์ณ ์ง๋ฐฐ์ ์ธ ๋ฌธ์ ์งํฉ์ด ๋์์ผ๋ฉฐ, ์ด ์์ ์์ ๋ค๋ฅธ ๋ชจ๋ ๋ฌธ์ ์งํฉ์ ๋ง ๊ทธ๋๋ก ์ด ์์ ์์ ์ญ์ฌ์ ํธ๊ธฐ์ฌ์ ๋ถ๊ณผํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ฌ์ ํ UTF-16 ๋ UTF-8์ ์ฌ์ฉํ ์ง ์ฌ๋ถ์ ๋ํด ์ ์์ค์ ๋์ด์ค๋ฅด๋ ์ธ์์ ํ๊ณ ์์ง๋ง, ์ ์ด๋ ๊ทธ ๋์ ์ผ๋ฐ์ ์ผ๋ก ๊ตฌ๋ณํ๊ธฐ ์ฝ๊ณ (BOM์ ๋ณด๊ฑฐ๋ null ๋ฐ์ดํธ์ ์ฐ์ธ๋ฅผ ์ฐพ์ผ์ญ์์ค) ์ ์ฒด UTF -8์ด ์ฝ๊ฒ ์ง๋ฐฐํฉ๋๋ค.
์ธ์ฝ๋ฉ ์์ ์ ๋ํ ๋น์ ์ ์ฃผ์ฅ์ ์ด ๋ชจ๋ ์ญ์ฌ, ์ ๋์ฝ๋๊ฐ ๋์ ๋ ์ดํ 20๋ ๋์ ๋ฐฐ์ด ๋ชจ๋ ๊ตํ์ ๋ฌด์ํฉ๋๋ค. ์์คํ ์ ํน์ ๋ฐฉ์์ผ๋ก ์ธ์ฝ๋ฉ๋๋ ๋ชจ๋ ๊ฒ์ ์ ๋ขฐํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ถ๋ถ์ ์ฌ์ฉ์๊ฐ ์ธ์ฝ๋ฉ ๋ฌธ์ ๋ฅผ ๋ณผ ์ ์๊ฒ ๋ง๋๋ ํจ๊ณผ๊ฐ ์๋ ์ต์ ์์คํ ์ค๊ณ์ ๋ค์ด๊ฐ ๋ชจ๋ ๊ฒฝํ๊ณผ ์ ๋ฌธ ์ง์์ ๋ฌด์ํฉ๋๋ค. ํ ๋ฒ์ ํ๋์ ๋ชจ์ง๋ฐ์ผ๋ฅผ ๊ณ ์งํ๋ค๋ฉด ์ฌ๊ฐํ๊ณ ์น๋ช ์ ์ด๋ฉฐ ๊ฐ๋น์ผ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ๊ฒ์ ๋๋ค.
@rossberg-chromium
๊ทธ๋์ ์ฌ๊ธฐ์ ๊ตฌ์ฒด์ ์ธ ์๋๋ฆฌ์ค๊ฐ ์์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ๋ค๋ฅธ ํ๋ซํผ์ ์๊ณ ๋ด๊ฐ ๋น์ ์๊ฒ ๋ชจ๋์ ์ ๋ฌํ๋ ค๊ณ ํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ๋ด ํ๋ซํผ์ด EBCDIC์ ๋น์ ์ ASCII๋ฅผ ์ฌ์ฉํ๋ค๊ณ ๊ฐ์ ํด๋ณด์. ํ์ฌ ์ ์์ ๋ฐ๋ฅด๋ฉด ์์ ํ ํฉ๋ฒ์ ์ ๋๋ค. ๊ทธ๋ฌ๋ ๋ด ๋ชจ๋์ ๋น์ ๊ณผ ๋น์ ์ ๋๊ตฌ ์ฒด์ธ์ ์์ ํ ์ธ๋ชจ๊ฐ ์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด UTF-8์ ๋ฌด์์ ํ ์ด๋ธ์ ๊ฐ์ ธ์ฌ๊น์? ๊ธ์, ๋๋ ๋ด๊ฐ ์ป๋ ์ ์์๋ ๋ฌธ์์ด์ "๋์ฝ๋ฉ"ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ด๊ฐ ์๋ ํ ๊ฒฐ๊ณผ๋ 31๋นํธ ๊ฐ์ ๋ ๋ค๋ฅธ ๋ถํฌ๋ช ํ ์ด์ง ์ผ๋ฃฉ์ ๋๋ค. ์ด๋ค ์ ๋ณด๋ ์ ๊ณตํ์ง ์์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ ๋ด ์์ ์ ๋ฌธ์์ด๊ณผ ๊ด๋ จ์ํค๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ฆ ๋๋ค.
UTF-8์ ๊ทธ๊ฒ์ ์์ ์ ๋ฌธ์์ด๊ณผ ์ด๋ป๊ฒ ์ฐ๊ด์ํค๋์ง ์ ํํ ์๋ ค์ค ๊ฒ์ ๋๋ค. ๊ทธ๊ฒ์ด ๋ฐ๋ก ๊ทธ๊ฒ์ด ํด๊ฒฐํ๋ ๋ฌธ์ ์ ๋๋ค. (WTF-8๋ ๊ฐ๋ฅํ ๋ ๊ทธ๋ ๊ฒ ํ ๊ฒ์ด๊ณ , ํ ์ ์์ ๋ ๋ช ํํ๊ฒ ์๋ ค์ค ๊ฒ์ ๋๋ค.)
๋ฌธ์์ด ํ์์ผ๋ก ๋งน๊ธ๋ง๋ ๋ค์ UTF-8๋ก ์ธ์ฝ๋ฉ๋ ์์์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์๋ฏธํฉ๋๊น? ๊ทธ๊ฒ์ ํด์ฒดํ ์ ์๋ ๊ฒ์ ์ฌ์ค์ด์ง๋ง, ๋ง๊ฐ์ง ์ด๋ฆ์ ๋ฌธ์์ด๋ก ์ต์ํ ๋ช ํํ๊ฒ ํ์ํ ์ ์์ต๋๋ค. ์ด๋ ์ผ๋ถ ์ฌ์ฉ ์ฌ๋ก์์ ์๋ฌด๊ฒ๋ ์๋ ๊ฒ๋ณด๋ค ๊ฐ์ ๋ ๊ฒ์ ๋๋ค.
UTF-8์ ์ ๋์ฝ๋๊ฐ ์๋ ๋ถํฌ๋ช ํ ์ ์์ ์ธ์ฝ๋ฉ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ ๋ํ ์์ ๋ ผ์๋ฅผ ์๋ฏธํฉ๋๊น? ๋ ผ์๊ฐ ๋ค์ ํผ๋์ค๋ฌ์์ง ๊ฒ ๊ฐ์์. "๊ตฌ๋ฌธ"๊ตญ์ ํ "์๋ฏธ"๋ฅผ ์ธ์ฝ๋ฉ ์ ํ๋ฅผ ์ ํน,ํ์ง๋ง ๊ทธ ์ ์ฉํ ๊ตฌ๋ถ์ ๋ชจํธํ๊ฒ : UTF-8์ ์์ง ๋งํ ์์๋ ์๋น์๊ฐ ์ ๋ณด์ ํจ๊ป ํ ๋ฌด์จ ๋ง์ํ์ง ์๊ณ ํน์ ๋ฐ์ดํธ ์ํ์ค ์๋จ "ร"๋ฅผ. ์ด๋ฐ ์์ผ๋ก ์ฌ์ฉํ๋ฉด ์ ๋์ฝ๋์ ์ธ์ฝ๋ฉ์ด์ง๋ง ์์์ ์ ์ํ "์ ๋์ฝ๋ ์ง์"์ ์ฌ์ฉ๋ ์ข ๋ฅ์ ๋น์ฉ์ด ํ์ํ์ง ์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์ ๋ด๊ฐ ์ ์ ์๋ ๋ฌธ์์ด์ ๋์ฝ๋ฉํ๋ ๋ฐ ๊ท์ฐฎ๊ฒ ํด์ผ ํฉ๋๊น? ๊ธ์, ๋๋ํ์ง ์์๊ฑฐ์ผ! 8๋นํธ ๊ฐ์ ์๋ ์ด์ง ๋ฉ์ด๋ฆฌ๋ก ์์ ํ๊ณ ๊ณต๊ฐ๊ณผ ์ฃผ๊ธฐ๋ฅผ ์ ์ฝํ ์ ์์ต๋๋ค. ํ์ง๋ง ์ฌ์์์๋ ์ฌ์ ํ ์ธ์ฝ๋ฉ์ ํ์ ํ๊ฒ ๊ฒ์ฆํ๊ธฐ ์ํด ์ฌ์ดํด์ ์๋นํด์ผ ํฉ๋๋ค.
์ด์ overlong ๋ฐ surrogate๋ฅผ ํฌํจํ์ฌ wasm ๊ฐ์ ธ์ค๊ธฐ/๋ด๋ณด๋ด๊ธฐ ์๋ณ์์ ์ ์ฒด UTF-8 ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ฌ์ฉํ์ฌ SpiderMonkey๋ฅผ ๊ตฌ์ถํ์ต๋๋ค. AngryBots ๋๋ ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ 30๊ฐ์ ๊ฐ์ ธ์ค๊ธฐ๊ฐ ์๋ ์์ emscripten ์ปดํ์ผ ํ
์คํธ ์ผ์ด์ค์์ WebAssembly.validate
์์ ์ฑ๋ฅ ์ฐจ์ด๋ฅผ ๊ฐ์งํ ์ ์์์ต๋๋ค.
์ฌ์์ ์ฌ๋ฌ ๊ด์ฌ์ฌ ์ฌ์ด์ ์ ์ถฉ์์ ๋๋ค. ์์ ์๊ฐ์ ๋ํ ๊ด์ฌ์ ๊ฐ์ฌํ๊ฒ ์๊ฐํ๋ฏ๋ก ์ด์ ๋ช ๊ฐ์ง ์คํ์ ์ํํ๊ณ ์ธก์ ํ์ต๋๋ค. ๋๋ ๋ค๋ฅธ ์ฌ๋๋ค์ด ๊ทธ๋ค ์์ ์ ์คํ์ ํ๋๋ก ๊ฒฉ๋ คํ๋ค.
๋ํ UTF-8์ ์ ์ผํ ์ ๋์ฝ๋ ์ธ์ฝ๋ฉ์ด ์๋๋ฉฐ ์ ๋์ฝ๋๊ฐ ์๋ ์ ์๋ฅผ ์ธ์ฝ๋ฉํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ UTF-8์ ์ ๋์ฝ๋๊ฐ ์๋๋๋ค.
์ ๋์ฝ๋์ ์ผ๋ถ๊ฐ ์๋(์ฆ, U+0000์์ U+10FFFF ๋ฒ์๋ฅผ ๋ฒ์ด๋) UTF-8๋ก ์ธ์ฝ๋ฉํ ์ ์๋ ์ ์๋ ๋ฌด์์ ๋๊น? ๊ทธ ๋ง์ ๊ฑฐ์ง์ธ ๊ฒ ๊ฐ๋ค.
๋ฌธ์์ ์ ํจ์ฑ์ ๊ฒ์ฌํ์ง ์์ผ๋ฉด 21๋นํธ ์ ์๋ฅผ ์ธ์ฝ๋ฉํ ์ ์์ต๋๋ค.
์ ์ฐ๋ฆฌ๊ฐ ์ ํจ์ฑ์ ๊ฒ์ฌํ์ง ์์์ง ํ์คํ์ง ์์ต๋๋ค...
@flagxor https://encoding.spec.whatwg.org/ ๋ ์น์ ๋ ธ์ถ๋ ๋ค์ํ ์ธ์ฝ๋ฉ์ ์ค๋ช ํฉ๋๋ค. ๊ทธ๋ค ์ค ์ด๋ ๊ฒ๋ ์ ๋์ฝ๋ ๋ฌธ์ ์งํฉ์ ๋ฒ์ด๋์ง ์์ง๋ง ๋ถ๋ช ํ ์๋ก ๋ฐ์ดํธ ํธํ์ด ๊ฐ๋ฅํ ๊ฒ์ ์๋๋๋ค.
"๊ฒ์ฆ"์ ๋ฌด์์ ํฉ๋๊น? ๋น์ ์ was ํ๋ก๊ทธ๋จ์ ๋ฌดํจ๋ก ๋ง๋์๊ฒ ์ต๋๊น? ํฉ๋ฆฌ์ ์ผ๋ก ๋ถ๊ณผ๋ ์ ์๋ ์ค์ง์ ์ธ ๊ฒฐ๊ณผ๋ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
CSS์์ ์ ํจํ์ง ์์ ์ด์ค์ผ์ดํ๋ฅผ ์ฌ์ฉํ๋ฉด ์คํ์ผ์ํธ์ U+FFFD๋ฅผ ๋ฃ์ ๋ฟ ์ด์ํ ์ผ์ ํ์ง ์์ต๋๋ค.
@annevk :
๋ํ UTF-8์ ์ ์ผํ ์ ๋์ฝ๋ ์ธ์ฝ๋ฉ์ด ์๋๋ฉฐ ์ ๋์ฝ๋๊ฐ ์๋ ์ ์๋ฅผ ์ธ์ฝ๋ฉํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ UTF-8์ ์ ๋์ฝ๋๊ฐ ์๋๋๋ค.
์ ๋์ฝ๋์ ์ผ๋ถ๊ฐ ์๋(์ฆ, U+0000์์ U+10FFFF ๋ฒ์๋ฅผ ๋ฒ์ด๋) UTF-8๋ก ์ธ์ฝ๋ฉํ ์ ์๋ ์ ์๋ ๋ฌด์์ ๋๊น? ๊ทธ ๋ง์ ๊ฑฐ์ง์ธ ๊ฒ ๊ฐ๋ค.
์ต์ํ U+FFFE ๋ฐ U+FFFF๋ ์ ๋์ฝ๋์์ ๋ฌธ์๊ฐ ์๋๋๋ค. ์ฝ๋ ํฌ์ธํธ(์ ์ ๊ฐ)๋ ์ ๋์ฝ๋์์ ๋ฌธ์๋ฅผ ์ธ์ฝ๋ฉํ๋ ๋ฐ ์ฌ์ฉ๋์ง ์์ง๋ง UTF-8๋ก ์ธ์ฝ๋ฉํ ์ ์์ต๋๋ค.
๊ทธ๋ค์ ์ฌ์ ํ โโ์ ๋์ฝ๋ ์ฝ๋ ํฌ์ธํธ์ ๋๋ค. ๋๋ "์บ๋ฆญํฐ"์ ๋๋ฌด ์ง์คํ์ง ์์ ๊ฒ์ ๋๋ค.
@tabatkins ๋ฅผ U+FFFD๋ก ๋์ฝ๋ฉํ๋ ๊ฒ์ ํฉ๋ฆฌ์ ์ด์ง๋ง ์ป์ ์ ์๋ ์ ์์ ์๋ฅผ ์ ํํฉ๋๋ค.
๋ฐ๋ผ์ C ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ชจ๋ ๋ฌธ์์ด ๋ฆฌํฐ๋ด์ ์ ๋์ฝ๋๋ฅผ ์ ์ฉํ๋ ๊ฒ๋ณด๋ค ์ฝ์ด Wasm์ ์ ๋์ฝ๋๋ฅผ ์ ์ฉํ๋ ๊ฒ์ ๋ ์ด์ ์๋ฏธ๊ฐ ์์ต๋๋ค. ์ผ๋ถ ์ ์ฌ ๊ณ ๊ฐ์๊ฒ ์ด ํ์ค์ ์๋ฐํ๋๋ก ๊ฐ์ํ ๋ฟ์ ๋๋ค. ์ด๋์ ๋ฌด์์ ๋๊น?
๋น์ ์ C11์ด ์ถ๊ฐ ํ ๋ฉ๋ชจ๋ฅผ ๊ฑธ๋ฆด ์ ์์ต๋๋ค char16_t
๋ฐ char32_t
์ ํ์ ์ ํ u
์ ๋์ฌ UTF-16 ์ธ์ฝ๋ฉ ๋ ๋ฌธ์์ด ๋ฆฌํฐ๋ด๋ฅผ ๋ค์ด, U
์ ๋์ด UCS-4๋ก ์ธ์ฝ๋ฉ๋ ๋ฌธ์์ด ๋ฆฌํฐ๋ด ๋ฐ UTF-8๋ก ์ธ์ฝ๋ฉ๋ ๋ฌธ์์ด ๋ฆฌํฐ๋ด์ ๋ํ u8
์ ๋์ฌ. ์ถ๊ฐ์ ๋ํ ๊ทผ๊ฑฐ๋ฅผ ์ฐพ์ ๋งํผ ์ถฉ๋ถํ ๊น์ด ํ๊ณ ๋ค์ง๋ ์์์ง๋ง "ํ์ค C/C++์์ ์ ๋์ฝ๋๋ฅผ ๋ค๋ฃจ๋ ๊ฒ์ ์
๋ชฝ"์ด๋ผ๋ ๊ฒ์ด ์ ์ด๋ ๋๊ธฐ์ ์ผ๋ถ๋ผ๊ณ ๊ฐ์ ํฉ๋๋ค.
@tabatkins , @sunfishcode , ์ข์์, ๊ทธ๋์ ๋น์ ์ ๊ฐ์ ๊ฒ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ AFAICT @jfbastien ์ ๊ทธ์ ์ ์์ด ์ ๋์ฝ๋ ๋ฌธ์ ์งํฉ ์์ด UTF-8์ ์ง์ ํ๋ ๊ฒ์ ๊ดํ ๊ฒ์์ ๋ช ์ ์ ์ด๊ณ ๋ฐ๋ณต์ ์ผ๋ก ๋ฐํ์ต๋๋ค.
์ ๋น์ฉ์ด๋ผ๋ ์ฃผ์ฅ์ด ๋ท๋ฐ์นจ๋๋ ์ ์ผํ ํด์์ด๊ธฐ๋ ํ๋ค.
์๋ํ๋ฉด ์ฐ๋ฆฌ๊ฐ ์ค์ ๋ก UTF-8์ด ์ ๋์ฝ๋๋ฅผ ์๋ฏธํ๋ค๊ณ ๊ฐ์ ํ๋ค๋ฉด ์ด ์๊ตฌ์ฌํญ์ ์์ง ์ ๋์ฝ๋(ํ์ ์งํฉ)๋ฅผ ๋งํ์ง ์๋ ์์คํ ์ ๋ชจ๋ ๋๊ตฌ์ ๋ํ UTF-8 ์ธ์ฝ๋ฉ/๋์ฝ๋ฉ๋ณด๋ค ํ์คํ ํจ์ฌ ๋ ๋น์๋๋ค. ์ ์ฒด ํธ๋์ค์ฝ๋ฉ ๋ ์ด์ด๋ฅผ ํฌํจํด์ผ ํฉ๋๋ค.
@tabatkins , ์ฝ์ด Wasm์ ๊ธฐ์กด ์์คํ ์ ๋ด์ฅ๋ ๊ฒ์ ๋๋ค. ๋๋ก๋ ์ด์์ฑ ์ด์ธ์ ์ด์ ๋ก ์ธํด ๋ณ๊ฒฝํ๊ฑฐ๋ ๋ถ๊ณผํ ๊ถํ์ด ์์ต๋๋ค. ๊ทธ๋ค์ด ๋น์ ์ด ์ค๋ช ํ๋ ๋ฌธ์ ์ ์ง๋ฉดํ๋ค๋ฉด ๊ทธ๊ฒ์ Wasm๊ณผ ๋ ๋ฆฝ์ ์ผ๋ก ์กด์ฌํฉ๋๋ค. _์ฐ๋ฆฌ๋ _๊ทธ๋ค์_ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
๊ทธ๋ค ๋ชจ๋์ ์ ๋์ฝ๋๋ฅผ ์ ์ฉํ๋ ค๋ _์๋_์ ๊ฐ๋ฅ์ฑ ์๋ ๊ฒฐ๊ณผ๋ ์ผ๋ถ ์ ์ฌ์ ์ธ ๊ฒ๋ค์ด ๋จ์ํ ์ฌ์์ ํด๋น ๋ถ๋ถ์ ์๋ฐํ์ฌ ์์ ํ ๋ฌด์๋ฏธํ๊ฒ ๋ง๋๋ ๊ฒ์ ๋๋ค(๋๋ ๋ ๋์๊ฒ๋ Wasm์ ์์ ํ ๋ฌด์ํ ๊ฒ์ ๋๋ค).
OTOH๊ฐ ์ ์ ํ ๊ณ์ธต์์ ์ง์ ๋๋ฉด ์ค์ ๋ก ์์ค ์์ด ๊ทธ๋ฌํ ์ํ์ ๊ฐ์ํ์ง ์์ต๋๋ค.
์๋ํ๋ฉด ์ฐ๋ฆฌ๊ฐ ์ค์ ๋ก UTF-8์ด ์ ๋์ฝ๋๋ฅผ ์๋ฏธํ๋ค๊ณ ๊ฐ์ ํ๋ค๋ฉด ์ด ์๊ตฌ์ฌํญ์ ์์ง ์ ๋์ฝ๋(ํ์ ์งํฉ)๋ฅผ ๋งํ์ง ์๋ ์์คํ ์ ๋ชจ๋ ๋๊ตฌ์ ๋ํ UTF-8 ์ธ์ฝ๋ฉ/๋์ฝ๋ฉ๋ณด๋ค ํ์คํ ํจ์ฌ ๋ ๋น์๋๋ค. ์ ์ฒด ํธ๋์ค์ฝ๋ฉ ๋ ์ด์ด๋ฅผ ํฌํจํด์ผ ํฉ๋๋ค.
ASCII๊ฐ ์๋ ์ ๋์ฝ๋๊ฐ ์๋ ๊ธฐ๋ณธ ๋ฌธ์ ์งํฉ์ ์ฌ์ฉํ๊ณ ํด๋น ๋ฌธ์๋ฅผ ์ ๋์ฝ๋๋ก/์์ ๋ณํํ๋ ๊ธฐ๋ฅ์ด ์์ผ๋ฉฐ Wasm์์ ASCII๊ฐ ์๋ ์๋ณ์๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ํ๋ซํผ์ ๋ฌด์์ ๋๊น? (๋์ค์์ Wasm์ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ ๊ฐ์์ ๋ฌ์์ ์กฐ์ง์ด ์๋๋ผ ์ค์ ๋ก ์กด์ฌํ๋ค๋ ์๋ฏธ์ ๋๋ค.)
@rocallahan ์ ๋ @rossberg-chromium์ด ์ ์ฒด ICU ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ถ๊ฐ ๋น์ฉ์ ์ํ์ง ์๋ ์๋ฒ ๋๋ ์์คํ ๊ณผ ๊ฐ์ ์ฅ์น์ ๊ด์ฌ์ด ์๋ค๊ณ ๋ฏฟ์ต๋๋ค(๋๋ ์ ์ด๋ ์ ๋ ๊ทธ๋ ๊ฒ ํ ๊ฒ์ ๋๋ค). ๊ทธ๋ค์ ๋ถํ๋ฆผ์ ์์ฉํ๊ฑฐ๋ ์์ ํ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ํํ์ง ์๊ฑฐ๋ ASCII๊ฐ ์๋ ๋ฌธ์๋ฅผ ํฌํจํ๋ wasm ํ์ผ์ ์๋ฝํ์ง ์์ ์ ์์ต๋๋ค(์ ์ดํ ์ ์์).
๋ํ ์๋ฐํ ๋งํ๋ฉด ์ด๋ฌํ ์ฅ์น์๋ ๋ค์๊ณผ ๊ฐ์ ๋นํ์ค ๋ฌธ์ ์งํฉ์ด ์๋ ํ๋์จ์ด๊ฐ ํฌํจ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
https://www.crystalfontz.com/product/cfah1602dyyhet-16x2-character-lcd?kw=&origin=pla#datasheets
https://www.crystalfontz.com/products/document/1078/CFAH1602DYYHET_v2.1.pdf
(๊ตฌํผ ํผํฉ ASCII + latin1 + ์ผ๋ณธ์ด ๋ฌธ์ ์ธํธ๊ฐ ์์)
๊ทธ๋ฌ๋ ์ฐ๋ ค๋๋ ๊ฒ์ ๋ฌด์์ ํ์ธํด์ผ ํ๋์ง์ ๊ด๊ณ์์ด ๊ด๋ จ์ด ์๋ค๋ ๊ฒ์
๋๋ค.
@tabatkins ์๋๊ฐ ๋ค์๊ณผ ๊ฐ๋ค๊ณ ์๊ฐํ์ง๋ง
๋๋ @rossberg-chromium์ด ์ ์ฒด ICU ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ถ๊ฐ ๋น์ฉ์ ์ํ์ง ์๋ ์๋ฒ ๋๋ ์์คํ ๊ณผ ๊ฐ์ ์ฅ์น์ ๊ด์ฌ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค(๋๋ ์ ์ด๋ ์ ๋ ๊ทธ๋ ๊ฒ ํ ๊ฒ์ ๋๋ค). ๊ทธ๋ค์ ๋ถํ๋ฆผ์ ์์ฉํ๊ฑฐ๋ ์์ ํ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ํํ์ง ์๊ฑฐ๋ ASCII๊ฐ ์๋ ๋ฌธ์๋ฅผ ํฌํจํ๋ wasm ํ์ผ์ ์๋ฝํ์ง ์์ ์ ์์ต๋๋ค(์ ์ดํ ์ ์์).
๋ฐ๋ณตํด์ ๋งํ๋ฏ์ด ์ด๊ฒ์ ์ฒญ์ด์ ๋๋ค. ICU์ ๊ด๋ จ๋ ์๊ฒฉ ์์ ์ ์ํํ ํ์๊ฐ ์์ต๋๋ค. ์น์ ํ์คํ ๊ทธ๋ ์ง ์์ต๋๋ค. ์ด ์๋ชป๋ ์ ๋ณด๋ฅผ ํผ๋จ๋ฆฌ๋ ๊ฒ์ ๋ฉ์ถฐ์ฃผ์ธ์.
"์ ์ฒด ์ ํจ์ฑ ๊ฒ์ฌ"๋ ์ผ์นํ๋ UTF-8 ๋์ฝ๋ฉ ์์ ์ ์ผ๋ถ๋ก ์๋์ผ๋ก ์ํ๋๋ ๋งค์ฐ ๊ฐ๋จํ ์์ ์ ๋๋ค.
@tabatkins ์ ์ฑํ
ํ ๋ ์ฌ๊ธฐ์ ๋ถ๋ช
ํ ํด์ผ ํ ํ ๊ฐ์ง๊ฐ ์ค์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ค์ํ๋ ์ ๋์ฝ๋ ๋์ฝ๋๋ ํ ๋น๋์ง ์์ ์ฝ๋ ํฌ์ธํธ ๋ฑ์ ์์ ์์ ์์ ์กฐํฉ์ ํ์ฉํ๋ ๋ฐ ํ์ํฉ๋๋ค. ๋ฐ๋ผ์ ์์ ์ ๋ฑ์ ์๋ชป๋ ํผํฉ์ ํฉ๋ฆฌ์ ์ธ ๊ฒ์ผ๋ก ๋ ๋๋ง๋์ง ์๋๋ผ๋ ์ ๋์ฝ๋์์ ํ์ฉํด์ผ ํฉ๋๋ค. ๋์ผ์ค ์กฐํฉ์ ๊ฑฐ๋ถํ ๋์ฝ๋๋ ๋น์ค์์
๋๋ค.
๋ฐ๋ผ์ ์ ์ ํ UTF-8 ๋์ฝ๋ฉ์ ๋ํ ์๊ตฌ ์ฌํญ์ ๋ช ์ค์ ์ฝ๋๋ก ์ํํ ์ ์๋ ๊ฒ์ผ๋ก ๋ฒ์๊ฐ ๋ช ํํ๊ณ ์ ํํ ์์ ์ด๋ฉฐ ๋ณธ์ง์ ์ผ๋ก ๋ฐ์ดํธ์ ์ ๋์ฝ๋ + utf-8 ํด์์ ์ง์ ํ๋ ๊ฒ๊ณผ ๋์ผํฉ๋๋ค.
์. UTF-8 ๊ตฌ๋ฌธ ๋ถ์์ ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค. ์ ์ผํ ํฉ๋ณ์ฆ์ UTF-8๋ก ์ธ์ฝ๋ฉํ ์ ์๋ ์์์ ์ฝ๋ํฌ์ธํธ์ด๋ฉฐ, ํธํ ๋์ฝ๋๋ ๋์ ํ๋ ์ด์์ U+FFFD ๋ฌธ์๋ก ๊ตฌ๋ฌธ ๋ถ์ํฉ๋๋ค.
๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ๋์ ์ด ํ ์์ ์ ๋๋ค. Wasm์ ์ด๊ฒ์ ๋ํด ๊ฑฑ์ ํ ํ์๊ฐ ์์ต๋๋ค. ํธํ ๋์ฝ๋๋ ์์์ ๋นํธ ํจํด์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. (๊ทธ๋ค์ ๋๋ถ๋ถ์ ๊ฐ๋น์ง ๋นํธ ํจํด์ด U+FFFD ๋ฌธ์๋ผ๊ณ ๊ฒฐ์ ํ ๊ฒ์ ๋๋ค.) ์ง๊ธ๊น์ง ์ ๊ฐ ์์ฒญํ ๊ฒ์ ์ด๋ฌํ ๋ฌธ์์ด์ UTF-8๋ก ์ธ์ฝ๋ฉํด์ผ ํ๋ ์์ฑ์ ์์ค์ ์ ํฉ์ฑ ์๊ตฌ ์ฌํญ์ ๋๋ค. ์ด๋ฅผ ์๋ฐํ๋ฉด ํด์ฒด์ธ์ด ์ด๋ฅผ ์ค๋ฅ๋ก ํ์ํ ์ ์์ง๋ง Wasm ์์ฒด๊ฐ ํด์ผ ํ ์ผ์ ์์ต๋๋ค.
์ด๊ฒ์ ์๋ฅผ ๋ค์ด CSS๊ฐ ์ ํจํ ์คํ์ผ์ํธ๋ฅผ ๊ตฌ์ฑํ๋ ๋ฌธ๋ฒ์ ์ ์ํ์ง๋ง ์ฌ์ ํ ๊ธฐ์ ์ ์ผ๋ก ์์์ ๋นํธ ํจํด์ ํ์ฉํ๋ ๊ฒ๊ณผ ์ ์ฌํฉ๋๋ค.
๋ํ ์๋ฐํ ๋งํ๋ฉด ์ด๋ฌํ ์ฅ์น์๋ ๋ค์๊ณผ ๊ฐ์ ๋นํ์ค ๋ฌธ์ ์งํฉ์ด ์๋ ํ๋์จ์ด๊ฐ ํฌํจ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
์ฌ๋๋ค์ด (๋น ASCII ๋ฒ์) Wasm ์๋ณ์๋ฅผ ์ฐ๊ธฐ๋ฅผ ๊ธฐ๋ํ์ง ์๋ ํ ๊ทธ๋ฌํ ๋ฌธ์ ์ธํธ์ ์กด์ฌ๋ Wasm๊ณผ ๊ด๋ จ์ด ์์ต๋๋ค.
๋ง์ต๋๋ค. ๋ชจ๋ "UTF-8 ์ฌ์ฉ"์ https://encoding.spec.whatwg.org/#utf -8-decoder๋ฅผ ์๋ฏธํฉ๋๋ค. ICU๋ ์๊ตฌ ์ฌํญ์ ๊ฐ๊น์ง ์์ต๋๋ค.
2017๋ 2์ 25์ผ 01:13์ Brad Nelson [email protected] ์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
@tabatkins https://github.com/tabatkins ์ ์ฑํ ํ ๋ ํ ๊ฐ์ง
์ฌ๊ธฐ์ ๋ช ํํ ํ๋ ๊ฒ์ด ์ค์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์์์ ๊ฒ์ ํ์ฉํ๋ ค๋ฉด ์ค์ํ๋ ์ ๋์ฝ๋ ๋์ฝ๋๊ฐ ํ์ํฉ๋๋ค.
ํ ๋น๋์ง ์์ ์ฝ๋ ํฌ์ธํธ ๋ฑ์ ์์์ด ์กฐํฉ.
์์ ์ ๋ฑ์ ๊ทธ๊ฒ์ ํตํด์๋ ํฉ๋ฆฌ์ ์ธ ๊ฒ์ผ๋ก ๋ ๋๋ง๋์ง ์์ต๋๋ค.
์ ๋์ฝ๋์์ ํ์ฉํด์ผ ํฉ๋๋ค. ๋์ผ์ค๋ฅผ ๊ฑฐ๋ถํ ๋์ฝ๋
์กฐํฉ์ ํธํ๋์ง ์์ต๋๋ค.๋ฐ๋ผ์ ์ ์ ํ UTF-8 ๋์ฝ๋ฉ์ ๋ํ ์๊ตฌ ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ด ๋ช ํํ๊ฒ ๋ฒ์๊ฐ ์ง์ ๋ฉ๋๋ค.
๋ช ์ค์ ์ฝ๋๋ก ์ํํ ์ ์๋ ์์ ์ ์ ํํ ์์ ์ ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์ ๋์ฝ๋ + utf-8์ ์ง์ ํ๋ ๊ฒ๊ณผ ๋์ผํฉ๋๋ค.
๋ฐ์ดํธ ํด์.๋ด๊ฐ ๋งํ ๊ฒ์ ๋ช ํํํ๊ธฐ ์ํด. ๋๋ ์์ ํ ICU๊ฐ ์๋ง๋ ๊ทธ๋ ์ง ์์ ๊ฒ์ด๋ผ๋ ๋ฐ ์ด์๋ฅผ ์ ๊ธฐํ์ง ์์ต๋๋ค.
ํ์ํฉ๋๋ค(์: ์ฝ๋ ํฌ์ธํธ๋ณ๋ก ์ด๋ฆ์ ์ ๋ ฌํ๋ ๊ฒ์ด ์ข์ง ์์ ๊ฒ์ฒ๋ผ ๋ค๋ฆฌ์ง๋ง
์ฌ์ฉ์ฑ).
๊ทธ๋ฌ๋ ์ฌ์ํ ํด๋
๋ง์ด ๋จ์ ์๋ค๋ ์ฃผ์ฅ์ ์ณ์ง ์๋ค.
๊ฒ์ฆ์ผ๋ก ๋๋์ง ์๊ธฐ ๋๋ฌธ์
๋๋ค. ๋น์ ๋์ฝ๋ ํ๋ซํผ
์ค์ ๋ก ๋ฌธ์์ด์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ํธ๋์ค์ฝ๋ฉ์ ์ํํด์ผ ํฉ๋๋ค.
๋ํ, ๊ทธ๋ค์ ์บ๋ฆญํฐ์ ๋ฌธ์ ๋ฅผ ๋ค๋ฃจ์ด์ผ ํ ๊ฒ์
๋๋ค.
(์ด๋ ๋ฐฉํฅ์ผ๋ก๋ ) ๋งคํํ ์ ์์ผ๋ฏ๋ก ์ฌ์ ํ ํธํ์ฑ์ด ์์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋ฌธ์ ๋ ๊ทธ๋ฅ ์ง๋์ณค์ต๋๋ค.
>
๋ํ ์๋ฐํ ๋งํ๋ฉด ์ด๋ฌํ ์ฅ์น์๋ ๋ค์์ ํฌํจํ๋ ํ๋์จ์ด๊ฐ ํฌํจ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
๋ค์๊ณผ ๊ฐ์ ๋นํ์ค ๋ฌธ์ ์งํฉ:์ด๋ฌํ ๋ฌธ์ ์งํฉ์ ์กด์ฌ๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ๊ฐ ์๋๋ฉด Wasm๊ณผ ๊ด๋ จ์ด ์์ต๋๋ค.
์ฌ๋๋ค์ด (๋น ASCII ๋ฒ์) Wasm ์๋ณ์๋ฅผ ์ฐ๊ธฐ๋ฅผ ๊ธฐ๋ํฉ๋๋ค.
@rocallahan https://github.com/rocallahan , ๊ทธ๋ค์ ์ฌ์ ํ โโํ ์ ์์ด์ผ ํฉ๋๋ค
์์์ ์ ๋์ฝ๋๋ฅผ ๊ฐ์ ธ์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋ค์ ๊ทธ๊ฒ์ผ๋ก ๋ฌด์์ ํ์๊น์? ์์ฆ์ด๋ผ๋ฉด
ASCII๋ก ์ ํ๋ ๊ทธ๋ฌํ ํ๋ซํผ์์์ ๊ตฌํ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ ์๋ ์ฌ์์ ์๋ฐํฉ๋๋ค. (๋๋ ๋ํ ๊ทธ๊ฒ์ ์๋ฏธํ๋ค๊ณ ์๊ฐํ ๊ฒ์
๋๋ค.
๋๊ตฐ๊ฐ์ ๋น ASCII ๋ฌธ์๋ ๋ฌธํ์ ์ผ๋ก ์ ํ์ ์ผ๋ก ๊ด๋ จ์ด ์์ ์ ์์ต๋๋ค.
์์ํ. ๊ทธ๊ฒ์ ๊ทธ๋ค์ด ๊ฒฐ์ ํ ๋ฌธ์ ์
๋๋ค.)
๊ฒ๋ค๊ฐ (์ด๋ ๋ฐฉํฅ์ผ๋ก๋ ) ๋งคํํ ์ ์๋ ์บ๋ฆญํฐ์ ๋ฌธ์ ๋ฅผ ์ฒ๋ฆฌํด์ผ ํ๋ฏ๋ก ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ ํ ํธํ์ฑ ๋ฌธ์ ๊ฐ ์๊ณ ๊ธธ์ ๊ฑท๋ค ๋ง์์ต๋๋ค.
์ด๊ฒ์ด ์ด๋ก ์ ๊ด์ฌ์ฌ์ ๋๊น?
๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ด ํฉ๋ฆฌ์ ์ธ ์ฐ๋ ค๋ผ๋ฉด ์ฐ๋ฆฌ๋ ์ธ์ฝ๋ฉ์ ์์กดํ ์ ์๊ณ ์ฒ๋ฆฌํด์ผ ํ๋ ์ธ๊ณ ์
๋น์ ๋์ฝ๋ ํ๋ซํผ์ ์ค์ ๋ก ๋ฌธ์์ด์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ํธ๋์ค์ฝ๋ฉ์ ์ํํด์ผ ํฉ๋๋ค.
ํ์ง๋ง ์ด๋ค ๊ฒฝ์ฐ์ Wasm ๋ฌธ์์ด์ด ํ๋ซํผ ๋ฌธ์์ด๊ณผ ์ํธ ์ด์ฉ๋์ด์ผ ํฉ๋๊น? ๋ด๊ฐ ๋งํ ์ ์๋ ํ ์ฐ๋ฆฌ๋ ์ค์ ๋ชจ๋ ์ฝ๋๋ก ์กฐ์๋ ๋ฌธ์์ด์ ์ธ์ฝ๋ฉ์ด ์๋๋ผ Wasm ๋ฉํ๋ฐ์ดํฐ์ ๋ฌธ์์ด ์ธ์ฝ๋ฉ์ ๋ํด์๋ง ์ด์ผ๊ธฐํ๊ณ ์๋ค๊ณ ๋งํ ์ ์์ต๋๋ค. (์๋ชป๋ ๊ฒฝ์ฐ ์ฌ๊ณผ๋๋ฆฝ๋๋ค...) ๊ทธ๋ ๋ค๋ฉด interop/transcoding์ด ํ์ํ ์ ์๋ ๋ช ๊ฐ์ง ๊ฐ๋ฅํ ๊ฒฝ์ฐ๋ง ์๊ฐํ ์ ์์ต๋๋ค.
์ค๋ฅธ์ชฝ?
๊ฐ์์ ๋น์ ๋์ฝ๋ ์๋ฒ ๋๋ ์์คํ ์ ๊ฒฝ์ฐ ์ฒ์ ๋ ๊ฒฝ์ฐ์ ๋ํ ์กฐ์ธ์ ๊ฐ๋จํฉ๋๋ค. ํ๋ซํผ ๊ฒฝ๊ณ๋ฅผ ๋์ด ๊ฐ์ ธ์จ ์๋ณ์๋ฅผ ASCII๋ก ์ ํํ๋ฉด ํ์ํ ํธ๋์ค์ฝ๋ฉ์ด ๊ฐ๋จํฉ๋๋ค. Wasm ๋ชจ๋์ ์ฌ์ ํ โโ๋ด๋ถ์ ์ผ๋ก ๊ทธ๋ฆฌ๊ณ ์๋ก ์ฐ๊ฒฐํ๊ธฐ ์ํด ์ ์ฒด ์ ๋์ฝ๋ ์ด๋ฆ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ธ ๋ฒ์งธ ๋ฌธ์ --- Wasm ๋ชจ๋์ ๋ซํ ์ธ๊ณ๊ฐ ์๋ ๊ฒฝ์ฐ ํด๋น ์๋ณ์๋ฅผ ASCII๋ก ์ ํํ ์ ์์ต๋๋ค. ๊ทธ๋ ์ง ์๋ค๋ฉด ์ค์ ๋ก UTF8 ์๋ณ์๋ฅผ ์ ํ๊ฒ ๋๋ฉฐ ์ด๋ฅผ ํธ๋์ค์ฝ๋ฉํ ์ ์๊ฒ ๋๋ฉฐ ์ฌ์์์ UTF8์ ์๊ตฌํ๊ฒ ๋์ด ๊ธฐ์ ๊ฒ์ ๋๋ค!
๋๊ตฐ๊ฐ์ ๋น ASCII ๋ฌธ์๊ฐ ์ ํ์ ์ผ๋ก ๊ด๋ จ์ด ์์์ ์์
๊ทธ๊ฒ์ ๋ฐ์ง๋งจ ์ฃผ์ฅ์ ๋๋ค. ์ฌ๊ธฐ์์ ์ ์ฅ์ "๋น ASCII ์๋ณ์๋ฅผ ์ํ๋ฉด ์ ๋์ฝ๋๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์ ๋์ฝ๋๋ก/์์ ํธ๋์ค์ฝ๋ฉ์ ๊ตฌํํ์ญ์์ค"์ด๋ฉฐ ๋ค๋ฅธ ์ฌ์์ธ AFAIK์์๋ "๋ฌธํ์ ์ผ๋ก ์์ฌ์ค๋ฝ๋ค"๋ ๋นํ์ ๋ฐ์ง ์์์ต๋๋ค.
>
๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ด ํฉ๋ฆฌ์ ์ธ ์ฐ๋ ค๋ผ๋ฉด, ์ฐ๋ฆฌ๋ ๋ค์ ํ๋ฒ (๋ฐ์
- ๋น์ฉ) ๊ฑฐ์ ๋ชจ๋ ๋ค๋ฅธ ๋น์ฉ์ ๋ํด ์ฒ๋ฆฌํ๋ ๋น์ฉ์ธ๊ณ์ Wasm ์ฌ์ฉ์ ,
๋์ผํ ์ธ์ฝ๋ฉ์ ์ฒ๋ฆฌํด์ผ ํ๋ ์ง์ฅ ๊ฐ์ ์น ํ๋ซํผ์ ํต๊ณผํด์ผ ํ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฒฐ๊ตญ ๊ฐ๋ฅํ ํ ์ ๊ณ ์ณค์ต๋๋ค.
@tabatkins , ์๋, ๋ค์
์ด๋ฏธ ์ฌ๋ฌ ๋ฒ): ๋ชจ๋ ์๋ฒ ๋ฉ ์ฌ์์ _will_ ์ธ์ฝ๋ฉ์ ์ง์ ํ๊ณ
๋ฌธ์ ์งํฉ์
๋๋ค. ๋ชจ๋ ํ๋ซํผ์์ ์ด๊ฒ์ ์์กดํ ์ ์์ต๋๋ค. ๋น์ ์ ๋จ์ง ์คํํ์ ๊ฒ์
๋๋ค
๊ด๋ จ๋์ง ์์ ๋ ๊ฐ์ง ์ฌ์ด์์ ์ํธ ์ด์ฉ์ ์๋ํ ๊ฒฝ์ฐ ์ธ์ฝ๋ฉ ์ง๋ฌธ์
์์ฝ ์์คํ
-- ์ด๋ฏธ ๋ ๊น์ ์ด์ ๋ก ์๋ฆฝํ ์ ์์ต๋๋ค.
๋ฌธ์์ด. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ๋ค๋ฅธ ํ๋ซํผ๊ณผ์ ์ํธ ์ด์ฉ์ฑ์๋ง ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
์์ ํ ์ ์ธํฉ๋๋ค. ๊ทธ๋์ ๋น์ ์ _์๋ฌด๊ฒ๋ ์์ง ์๊ณ _ ์ฌ์ฉํ ์ ์๋ ๋ฅ๋ ฅ์ ์ป์ต๋๋ค.
๋ ๋ค์ํ ํ๋ซํผ์์ Wasm.
๋น์ ์ ์ํํธ์จ์ด ์์ง๋์ด์
๋๋ค. ๋ฐ๋ผ์ ๋๋ ๋น์ ์ด ์ดํดํ๊ณ ๊ฐ์ฌํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
๋ฌธ์ ๋ฅผ ๋ถ๋ฆฌํ๊ณ ์ต๋ํํ๊ธฐ ์ํ ๋ชจ๋ํ ๋ฐ ๊ณ์ธตํ์ ๊ฐ์น
์ฌ์ฌ์ฉ. ์ด๋ ์ฌ์์๋ ์ ์ฉ๋ฉ๋๋ค.
>
๋น์ ๋์ฝ๋ ํ๋ซํผ์ ์ค์ ๋ก ํธ๋์ค์ฝ๋ฉ์ ์ํํด์ผ ํฉ๋๋ค.
๋ฌธ์์ด์ ์ฒ๋ฆฌํฉ๋๋ค.์ด๋ค ๊ฒฝ์ฐ์ Wasm ๋ฌธ์์ด์ด ํ๋ซํผ ๋ฌธ์์ด๊ณผ ์ํธ ์ด์ฉ๋์ด์ผ ํ๋์ง,
๊ทธ๋ ์ง๋ง? ๋ด๊ฐ ๋งํ ์์๋ ํ ์ฐ๋ฆฌ๋ ์ธ์ฝ๋ฉ์ ๋ํด์๋ง ์ด์ผ๊ธฐํ๊ณ ์์ต๋๋ค.
์ ์ํด ์กฐ์๋ ๋ฌธ์์ด์ ์ธ์ฝ๋ฉ์ด ์๋ Wasm ๋ฉํ๋ฐ์ดํฐ์ ๋ฌธ์์ด
์ค์ ๋ชจ๋ ์ฝ๋. (๊ทธ๊ฒ ํ๋ฆฌ๋ค๋ฉด ์ฌ๊ณผํ ๊ฒ...) ๊ทธ๋ผ ์๊ฐ๋ฐ์ ์๋
interop/transcoding์ด ํ์ํ ์ ์๋ ๋ช ๊ฐ์ง ๊ฐ๋ฅํ ๊ฒฝ์ฐ:
- Wasm ๋ชจ๋์ ํ๋ซํผ ์๋ณ์๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
- ํ๋ซํผ์ Wasm ์๋ณ์๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
- Wasm ์ด๋ฆ์ ์ถ์ถํ์ฌ ์ธ์ํ๊ฑฐ๋ ํ๋ซํผ์ ์ฌ์ฉํ์ฌ ์ ์ฅํฉ๋๋ค.
๋ฌธ์์ด, ์๋ฅผ ๋ค์ด ์คํ ์ถ์ ์ ๋คํํฉ๋๋ค.์ค๋ฅธ์ชฝ?
์. ์ฆ, ์ค์ ๋ก ๋ฌธ์์ด์ _์ฌ์ฉ_ํด์ผ ํ ๋๋ง๋ค.
๊ฐ์์ ๋น์ ๋์ฝ๋ ์๋ฒ ๋๋ ์์คํ ์ ๊ฒฝ์ฐ ์ฒ์ ๋ ๊ฒฝ์ฐ์ ๋ํด
์กฐ์ธ์ ๊ฐ๋จํฉ๋๋ค. ํ๋ซํผ ์ ์ฒด์์ ๊ฐ์ ธ์จ ์๋ณ์๋ฅผ ์ ํํ์ญ์์ค.
๊ฒฝ๊ณ๊ฐ ASCII์ธ ๊ฒฝ์ฐ ํ์ํ ํธ๋์ค์ฝ๋ฉ์ ๊ฐ๋จํฉ๋๋ค. Wasm ๋ชจ๋
๋ด๋ถ์ ์ผ๋ก ๊ทธ๋ฆฌ๊ณ ์๋ก ์ฐ๊ฒฐํ๊ธฐ ์ํด ์ ์ฒด ์ ๋์ฝ๋ ์ด๋ฆ์ ๊ณ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.์ธ ๋ฒ์งธ ๋ฌธ์ ์ ๊ฒฝ์ฐ --- Wasm ๋ชจ๋์ ๋ซํ ์ธ๊ณ๊ฐ ์๋ ๊ฒฝ์ฐ
์๋ณ์๋ฅผ ASCII๋ก ์ ํํ ์ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ค์ ๋ก
UTF8 ์๋ณ์๋ฅผ ๋ง๋๋ฉด ์ด๋ฅผ ํธ๋์ค์ฝ๋ฉํ ์ ์๊ณ
์ฌ์์ด UTF8๋ก ์ง์ ๋์ด ๊ธฐ์ ๊ฒ์ ๋๋ค!์ ์์ ๋ฐ๋ผ ASCII๋ก ์๋ฌด๊ฒ๋ ์ ํํ ์ ์์ต๋๋ค! NS
ํต์ฌ ์ฌ์์ด ๋ ํ์ฉ๋์ด์ผ ํจ์ ํ์ฉํฉ๋๋ค. ๊ทธ๋์ ๋น์ ์ ๋ง๋ค๊ณ
๋ด ์ ์ฅ.
๋ชจ๋ ์๋ฒ ๋ฉ ์ฌ์์ _will_ ์ธ์ฝ๋ฉ๊ณผ ๋ฌธ์ ์งํฉ์ ์ง์ ํฉ๋๋ค. ๋ชจ๋ ํ๋ซํผ์์ ์ด๊ฒ์ ์์กดํ ์ ์์ต๋๋ค. ๋ฌธ์์ด๋ณด๋ค ๋ ๊น์ ์ด์ ๋ก ์ด๋ฏธ ํธํ๋์ง ์๋ ๋ ๊ฐ์ ๊ด๋ จ๋์ง ์์ ์์ฝ ์์คํ ๊ฐ์ ์ํธ ์ด์ฉ์ ์๋ํ๋ ๊ฒฝ์ฐ์๋ง ์ธ์ฝ๋ฉ ์ง๋ฌธ์ ๋ถ๋ชํ ๊ฒ์ ๋๋ค.
๋์ค์ด์ ๋ธ๋ฌ์ ๊ฐ์ Wasm ์ฒ๋ฆฌ ๋๊ตฌ๋ ์ด๋ป์ต๋๊น? "์๋ฒ ๋ฉ ์ฌ์" ๋ณํ์ ๊ด๊ณ์์ด ๋ชจ๋ Wasm ๋ชจ๋๊ณผ ํจ๊ป ์๋ํ๋ ๋์ค์ด์ ๋ธ๋ฌ๋ฅผ ์์ฑํ ์ ์๋ค๋ ๊ฒ์ด ๊ฐ์น๊ฐ ์์ง ์์๊น์?
์ ์์ ๋ฐ๋ผ ASCII๋ก ์๋ฌด๊ฒ๋ ์ ํํ ์ ์์ต๋๋ค!
์ ์์ ๋ฐ๋ฅด๋ฉด Wasm ๋ชจ๋์ ASCII๋ก ์ ํ๋์ง ์์ง๋ง ๊ตฌํ์๊ฐ Wasm ๋ชจ๋ ์ธ๋ถ์ ์ ์๋ ๋ชจ๋ ์๋ณ์๋ฅผ ASCII๋ก ๋ง๋ค๊ธฐ๋ก ์ ํํ ๊ฒฝ์ฐ(์: ๊ฑฐ์ ๋ชจ๋ ์์คํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ค์ ๋ก ํ๋ ๊ฒ์ฒ๋ผ), ์ด๋ Wasm์ ๋ฒ์๋ฅผ ๋ฒ์ด๋ฉ๋๋ค. ํฌ๊ธฐ.
๊ตฌํ์๊ฐ ์คํ ์ถ์ ์์ ASCII ๋ฌธ์๋ง ์ธ์ํ๊ณ ๋ชจ๋ ๋น ASCII ์ ๋์ฝ๋ ๋ฌธ์๋ฅผ ?
๋๋ ์ด์ ์ ์ฌํ ๊ฒ์ผ๋ก ๋ฐ๊พธ๊ธฐ๋ก ์ ํํ ๊ฒฝ์ฐ ์ค์ ๋ก๋ ํญ์ ์ฌ์ฉํ์ง ์๋ ์ ๋์ฝ๋ ๋ฌธ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ฌ์์์ ํ์ฉํด์ผ ํฉ๋๋ค. ์ด์จ๋ ๊ธ๊ผด์ด ์์ต๋๋ค.
๋ชจ๋ Wasm ์ด๋ฆ์ด ASCII์ธ Wasm์ ํ์ ์งํฉ์ ์ ์ํ๋ ๊ฒ์ Wasm ์ด๋ฆ์ UTF8๋ก ์ฒ๋ฆฌํ๋ ๋๊ตฌ์ ์ํด ๊ทธ๋ฌํ Wasm ๋ชจ๋์ด ์ฌ๋ฐ๋ฅด๊ฒ ์ฒ๋ฆฌ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์๋นํ ๋ฌดํดํ ๊ฒ์ ๋๋ค.
๋น์ ์ ์ํํธ์จ์ด ์์ง๋์ด์ ๋๋ค. ๋ฐ๋ผ์ ๋ฌธ์ ๋ฅผ ๋ถ๋ฆฌํ๊ณ ์ฌ์ฌ์ฉ์ ๊ทน๋ํํ๊ธฐ ์ํด ๋ชจ๋ํ ๋ฐ ๊ณ์ธตํ์ ๊ฐ์น๋ฅผ ์ดํดํ๊ณ ๊ฐ์ฌํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ์ด๋ ์ฌ์์๋ ์ ์ฉ๋ฉ๋๋ค.
์, ์ ๋ ์ํํธ์จ์ด ์์ง๋์ด์ ๋๋ค. ๋๋ ๋ํ ์ฌ์ ์์ง๋์ด์ด๊ธฐ ๋๋ฌธ์ ์ผ๊ด์ฑ์ ๊ฐ์น๋ฅผ ์ดํดํ๊ณ ์ํ๊ณ๊ฐ ๋ ์ ์๋ํ๋๋ก ํ๋ ๊ท๋ฒ์ ์๋ฆฝํฉ๋๋ค. ๋ฌธ์ ์งํฉ๊ณผ ์ธ์ฝ๋ฉ์ ๋ชจ๋ํ์ ์ ํ์ ํ์ฉํ๋ ๊ฐ์น๊ฐ ์ผ๊ด์ฑ๊ณผ ์์ธก ๊ฐ๋ฅ์ฑ์ ๊ฐ์น๋ณด๋ค ํจ์ฌ ๋ ์ค์ํ ์ฃผ์ ์ค ํ๋์ ๋๋ค. ์ฐ๋ฆฌ๋ ์ด๊ฒ์ ๋ํ ๋ฌธ์ ๊ทธ๋๋ก ์์ญ ๋ ์ ์ฆ๊ฑฐ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋น์ ์ด ์ญ์ฌ์์ด ๋งค์ฐ ์ค๋ ๋์์ ๋ณด์ฌ์ค ๋ช ๊ฐ์ง์๋ ๋ง์ ์ ๋ฌธ๊ฐ์ ์ถ์ฒ, ๋๋์ ์๊ฒฌ์ ํํํ๊ณ ์์ด ๋ง์ ๋ฌด์ํ๊ณ , ์ฐ๋ฆฌ๊ฐ ํ ํ์๊ฐ ์์์ ์ฃผ์ฅ ํ ๋ - ์ด๊ฒ์ ๋ด๊ฐ ๋ ์์ ์ ๋ฐ๋ณต ๊ณ์ ์ด์ ์ด์ ๊ด๋ จํ์ฌ ์์ ๋ฅผ ํ์ฉํ์ญ์์ค.
์ด ์ ์ฒด(๊ธด) ์ค๋ ๋๋ฅผ ์ฝ์ ํ ์ด ํ ๋ก ์ ํด๊ฒฐํ ์ ์๋ ์ ์ผํ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๋ ์ด๋ฆ ์น์ ์ ๋ฐ์ด๋๋ฆฌ ํ์์ผ๋ก ๋ช ์์ ์ผ๋ก ์ง์ ํ๊ณ https://github.com/WebAssembly/design/pull ์์ ๊ฐ์ ํ๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. UTF-8 ์ธ์ฝ๋ฉ ์ด๋ฉฐ, ์ ๋ ๋จ์ํ ํด๋น ์น์ ์ "utf8-names"๋ผ๊ณ ๋ถ๋ฅผ ๊ฒ์ ์ ์ํฉ๋๋ค. ์ด๋ ์ธ์ฝ๋ฉ์ ๋ช ์์ ์ผ๋ก ๋ง๋ค๊ณ ์ค๋๋ ๋ชจ๋ ๊ด๋ จ ํ๋ซํผ์์ WASM ๋ฐ์ด๋๋ฆฌ๋ฅผ ์กฐ์ํ๋ ค๋ ๊ฑฐ์ ๋ชจ๋ ๋๊ตฌ๋ ์ด์จ๋ UTF-8์ ์ฌ์ฉํ๊ธฐ๋ฅผ ์ํฉ๋๋ค. ๊ทธ๋ค์ UTF-8๋ง ๋งํ๋ ๊ฒ์ ๋ํด ์ฉ์๋ฐ์ ์ ์์ต๋๋ค.
๋ค๋ฅธ ํ๋ซํผ์ ๋ํ @rossberg-chromium์ ์ฐ๋ ค์ ๋ฏผ๊ฐํ๋ฉฐ ์ด๋ ์ ๋ ๋์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ ์ฝ๊ฒ ๊ณ ์น ์ ์์ต๋๋ค. ์ค๋ ๋์ ์๋ถ๋ถ์์ ๋๊ตฐ๊ฐ๊ฐ ์ ์ํ๋ฏ์ด ์ด๋ฌํ ์์คํ ์ ๋นํ์ค "ascii-names" ์น์ ์ด๋ ์ํ๊ณ์์ ์ฌ์ฉํ๋ ๋ค๋ฅธ ์ธ์ฝ๋ฉ์ ์ถ๊ฐํ๋ ๊ฒ์ ํ์ํฉ๋๋ค. ๋ช ์์ ์ด๋ฆ์ ์ฌ์ฉํ๋ฉด ์ด๋ค ๋๊ตฌ๊ฐ ์ด๋ค ์น์ ์์ ์๋ํ๋์ง ๋ช ํํด์ง๋๋ค. DOS์์๋ง ์๋ํ๋ ๋ชจ๋์ ๊ฒฝ์ฐ DOS ๊ด๋ จ ์น์ ์ด ์์ผ๋ฉด ์ด๊ฒ์ด ๋ถ๋ช ํด์ง๋๋ค. IMO ์ด๋ฌํ ๋ฐ์ด๋๋ฆฌ์ ์ด๋ฆ์ ๋ค๋ฅธ ์ธ์ฝ๋ฉ์ผ๋ก ํด์ํ๋ ๊ฒ์ ์ฌ์์ด ๋ ๊ฒ์ ๋๋ค.
(๊ทธ๋ฐ๋ฐ ์ด๊ฒ์ ์ฌ์ฉ์๊ฐ ์ ๋ก๋ํ ์ฝํ ์ธ ์ ๋ํ ๋ฌธ์์ด์ ์ธ์ฝ๋ฉ์ ์ค์๋ก ์์ด๋ฒ๋ฆฌ๊ณ ๋ณต๊ตฌํ ์ ์๋ ์์คํ ์ ๋ํ ์ ์ ์ด์ผ๊ธฐ์์ ์ ์ ์์ต๋๋ค. ์์คํ ์ ๋์ฐํ๊ณ ๊ฒฝ๋ จ์ ์ธ ์ฃฝ์์ ๋ง์ดํ์ต๋๋ค. ๋ง ๊ทธ๋๋ก ์๋ฐฑ๋ง ๋ฌ๋ฌ์ ์์ค์ ์ ์์ต๋๋ค. .)
์ด๋ฆ ์น์
(heh)์ ๋ํ ๋ช
๋ช
ํ์ค์ ์ฑํํ์ฌ ๋ชจ๋ "\
@titzer ์, ์ฌ์ฉ์ ์ ์ ์น์ ์ UTF8๊ณผ ์๋ฌด ๊ด๋ จ์ด ์๋ ์ด๊ตญ์ ์ด๊ฑฐ๋ ์ ๋ฌธํ๋ ํ๋ซํผ์ ์ํ ์๋ฃจ์ ์ ๋๋ค. ์ฌ์์ ๊ท์ ํ๊ธฐ๋ ๊บผ๋ ค์ง๊ฒ ์ง๋ง: ํ๋ซํผ์ด ์๋ ๋ชจ๋์์ ๋๋ฌด ๊ตฌ์ฒด์ ์ด์ด์ UTF-8 ์ฝ๋ ํฌ์ธํธ๋ฅผ ๊ธฐ๋ณธ ํ๊ฒฝ ์ค์ ์ ๋งคํํ๋ ๋ฐ ์ ๊ฒฝ์ ์ธ ์ ์๋ ๊ฒฝ์ฐ ๋ค์์ ์ํํ ์ ์์ต๋๋ค. ์ ํธํ๋ ์ธ์ฝ๋ฉ์ผ๋ก ์ด๋ฆ์ ์ ๊ณตํ๋ ๊ฒ๋ณด๋ค ์ฌ์ฉ์ ์ ์ ์น์ ์ด ํจ์ฌ ๋ ๋ง์ต๋๋ค.
์ฌ์์์ ํ๋ซํผ๋ณ ์ธ๋ถ ์ ๋ณด์ ๋ํด ์ฌ์ฉ์ ์ ์ ์น์ ์ ์ฌ์ฉํ๋ ๋ฐ ๋ ์ค์ ์ ๋๊ณ ํ๋ซํผ ์์ฒด ์ฌ์์์ ์ด๋ฌํ ์ธ๋ถ ์ ๋ณด๋ฅผ ์ ์ํ๋๋ก ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ผ๋ฐ์ ์ธ WASM ๋๊ตฌ ์ฒด์ธ์ ์ผ์ข ์ ํ๋ฌ๊ทธ์ธ ์ํคํ ์ฒ๋ฅผ ํตํด ์ด๋ฅผ ์ง์ํ ์ ์์ต๋๋ค.
@titzer utf8-names
์ ํํ๋ ๊ฒ์ ๊ด์ฐฎ์ต๋๋ค. ๋ณด๋์ค๋ก, ๋ธ๋ผ์ฐ์ ๋ "์ด๋ฆ"์ ์ญ์ ํ๊ธฐ ์ ์ ๋ฆด๋ฆฌ์ค์ ๋ํด "์ด๋ฆ"(์ด์ ํ์)๊ณผ "utf8-names"(#984 ํ์)๋ฅผ ๋ชจ๋ ์ฝ๊ฒ ์ง์ํ ์ ์์ผ๋ฏ๋ก ์ ํ์ด ์ํํด์ง๋๋ค. ์ด๋ฅผ ๋ฐฐํฌํด์ผ ํ๋ ์๊ธํจ์ ๋ง์ด ์ ๊ฑฐํฉ๋๋ค.
์ด๋ฏธ ์์์ ๊ฒฐ์ ํ๋ค๋ฉด ์ฃ์กํฉ๋๋ค. ํ์ง๋ง ๋ถ๋ช ํ ๋ง์๋๋ฆฌ์๋ฉด, ์ด์ BinaryEncoding.md์ ์๋ ๊ฐ์ ธ์ค๊ธฐ/๋ด๋ณด๋ด๊ธฐ ์ด๋ฆ์ ์ ์๋ ๋ณ๊ฒฝ ์ฌํญ์ด ์์ต๋๊น?
utf8-names
๊ด์ฐฎ์ต๋๋ค.
๊ฐ์ ธ์ค๊ธฐ/๋ด๋ณด๋ด๊ธฐ์ @lukewagner ์ ๋์ผํ ์ง๋ฌธ์ ๋๋ค.
@lukewagner @jfbastien ์ข์ ์ง๋ฌธ์ ๋๋ค. ์์ ๊ฒฐ์ ์ ๋ณด์ง ๋ชปํ์ต๋๋ค. ๋ฌด์๋ณด๋ค๋ ์ฐ๋ฆฌ๊ฐ ํ์ฌ ๊ฐ์ง๊ณ ์๋ ๋ฐ์ด๋๋ฆฌ ํ์์ ๋ณ๊ฒฝํ๊ณ ์ถ์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋์ ์ฐ๋ฆฌ๊ฐ ํ ์ผ์ด ํฉ๋ฆฌ์ ์ด๋ผ๊ณ ์ค์ค๋ก๋ฅผ ๋ฉ๋์ํค๊ธฐ ์ํด ๊ฑฐ์ณ์ผ ํ๋ ์ ์ ์ ์๊ณก์ด ๋ฌด์์ด๋ ๊ฐ์ ๋ง์ด์ฃ :-)
AFAICT๋ ํ์ฌ ๊ฐ์ ธ์ค๊ธฐ/๋ด๋ณด๋ด๊ธฐ์ ๋ฌธ์์ด์ด ํด์๋์ง ์์ ๋ฐ์ดํธ ์ํ์ค๋ผ๊ณ ๊ฐ์ ํฉ๋๋ค. ๊ด์ฐฎ์. ๋ด ์๊ฐ์๋ ๊ฐ์ ธ์ค๊ธฐ/๋ด๋ณด๋ด๊ธฐ์ ์ฌ์ฉ๋๋ ๋ฌธ์์ด์ ์ธ์ฝ๋ฉ์ด ์ด๋ฆ ์น์ ์ด ์๋ ๋ฐฉ์์ผ๋ก ์๋ฒ ๋์ ์ํด ๋จ๋ ์ผ๋ก ์ ์๋๋ ๊ฒ์ ๊ณ ๋ คํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์๋ฅผ ๋ค์ด JS๋ ํญ์ UTF-8์ ์ฌ์ฉํฉ๋๋ค. ์ด๋ฆ ์น์ ์ ์ด๋ฆ ์น์ ์ ์ด๋ฆ์ ๋ช ์์ ์ธ์ฝ๋ฉ๊ณผ ํจ๊ป ์ ๊ณต๋ฉ๋๋ค.
์งง์ ๋ฒ์ : ๊ฐ์ ธ์ค๊ธฐ/๋ด๋ณด๋ด๊ธฐ ์ ์ธ์ ์ด๋ฆ ์ธ์ฝ๋ฉ์ ํฌํจ ํ๊ฒฝ์ ์์ฑ์ด๊ณ ์ด๋ฆ ์น์ ์ ์ด๋ฆ ์ธ์ฝ๋ฉ์ ์ฌ์ฉ์ ์น์ ์ ์๋ณํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ฌธ์์ด์ ์ํด ๋ช ์์ ์ ๋๋ค(์: "utf8-names").
์ด๋ป๊ฒ ์๊ฐํ์ญ๋๊น?
๊ทธ๊ฒ์ ๊ด์ฐฎ๊ณ #984๊ฐ ๋ณํฉ๋๊ธฐ ์ ์ ์์๋ ๊ฒ๊ณผ ์ผ์นํฉ๋๋ค(modulo names
=> utf8-names
).
์ด๋ฆ ์น์ ์ ์ง์ ํ ํธํ์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฐ์ ธ์ค๊ธฐ/๋ด๋ณด๋ด๊ธฐ๋งํผ ์ค์ํ์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ฐ๋ฆฌ ๋ชจ๋๊ฐ ๊ตฌํํ๋ ์๋ฒ ๋ฉ์ด ์ด๋ฏธ ์ด๊ฒ์ ๊ฐ์ ํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ด ์ง์ ํ ๋ฐ์ด๋๋ฆฌ ํ์ ๋ณ๊ฒฝ์ด๋ผ๊ณ ์๊ฐํ์ง ์์ต๋๋ค.
๋ซ๊ธฐ ์ ์ ์ด ์ฃผ์ ์ ๋ํด ๋๋ณด๋ค ๋ ์ ์๊ณ ์๋ ์ฌ๋๋ค์ ์ถ์ฒ์ ๊ธฐ๋ ๊ฒ์ ๋๋ค.
UTF-8์ ๋์ฝ๋ฉํ๋ ๋ฐฉ๋ฒ์ ๊ฒฐ์ ํด์ผ ํฉ๋๋ค. ์๋ชป๋ ์ํ์ค๋ฅผ U+FFFD๋ก ๋ฐ๊พธ๊ฑฐ๋ ์ฒซ ๋ฒ์งธ ์ค๋ฅ์์ ์ค์งํฉ๋๊น? ์ฆ, https://encoding.spec.whatwg.org/#utf -8-decode-without-bom ๋๋ https://encoding.spec.whatwg.org/#utf -8-decode-without-๋ฅผ ์ํฉ๋๋ค. ๋ถ ๋๋ ์คํจ. ๋ฆฌ์์ค๊ฐ ์ด๋ฆ์ U+FFFD๋ฅผ ์ฌ์ฉํ์ง ์๋ ํ ์ด๋ ์ชฝ์ด๋ ๋ก๋๊ฐ ์คํจํ ์ ์์ต๋๋ค.
ํ์ฌ ์ค๋ช
๋ ๋ฐฉ์์ผ๋ก ๊ฐ์ ธ์ค๊ธฐ/๋ด๋ณด๋ด๊ธฐ ์ด๋ฆ ๋ฐ์ดํธ ๋ฐฐ์ด์ด UTF-8๋ก JS ๋ฌธ์์ด๋ก ๋์ฝ๋ฉ๋์ง ์์ผ๋ฉด ์์ธ๊ฐ ๋ฐ์ํฉ๋๋ค. ๊ทธ ํ, JS ๋ฌธ์์ด์ด ์๊ณ ๊ฐ์ ธ์ค๊ธฐ ์กฐํ๋ Get
์ธก๋ฉด์์ ์ ์๋ฉ๋๋ค.
๋ด ์ดํด๋ฅผ ํ์ธํ๊ธฐ ์ํด https://encoding.spec.whatwg.org/#utf -8-decode-without-bom-or-fail์ ์ํํ๋ค๋ฉด ์ฑ๊ณต์ ์ธ ์ ํจ์ฑ ๊ฒ์ฌ ํ ์ฝ๋ ํฌ์ธํธ-์ํ์ค ํ๋ฑ์ ํ์ธํ์์ ์๋ฏธํฉ๋๋ค. ๋ฐ์ดํธ ์ํ์ค ํ๋ฑ์ ํ์ธํ๋ ๊ฒ๊ณผ ๋์ผํฉ๋๊น?
์.
์์ ๋ ผ์ ํ์ ํต์ฌ ์ฌ์์์ ๊ฐ์ ธ์ค๊ธฐ/๋ด๋ณด๋ด๊ธฐ ์ด๋ฆ์ ๋ํด UTF-8 ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ง์ํฉ๋๋ค.
ํนํ ์ด๊ฒ์ utf-8-decode-without-bom-or-fail ๋ฐ codepoint-sequence ๊ฐ์( ์์ง์ด ๋ฐ์ดํธ ์ํ์ค ๊ฐ์์ ์ํํ ์ ์์ )์ด๋ฏ๋ก ์์ง์ ์ ๋์ฝ๋ ๋ฐ ๊ตญ์ ํ์ ๋ฌด์ญ๊ณ ๊ฐ๋น์ผ ๋ถ๋ถ์ ํผํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ์น ์๋ฒ ๋ฉ๊ณผ ์ผ์นํฉ๋๋ค. ๋๋ ์ด๊ฒ์ ์คํ ํ๊ณ ์ฃผ์ ์ค๋ฒ ํค๋๋ ๋ฌด์ํ ์ ์์์ ๋ฐ๊ฒฌํ์ต๋๋ค.
Re: ํ๋์จ์ด ISA๋ ์ธ์ฝ๋ฉ์ ๋ํด ๋ถ๊ฐ์ง๋ก ์ ์ ๋๋ค. ์ฌ๊ธฐ์ ๋งํ๋ ํ๋์จ์ด๋ ๊ฐ์ ธ์ค๊ธฐ/๋ด๋ณด๋ด๊ธฐ ๊ธฐ๋ฅ์ด ์์ผ๋ฏ๋ก ๋น์ ๊ฐ ์ง์ ์ ์ฉ๋์ง ์์ต๋๋ค. ๊ทธ๋ฌํ ํ๋์จ์ด๊ฐ ๋ชจ๋ ์ข ๋ฅ์ ๋ฐ์ดํธ ์ํ์ค ์๋ณ์์ธ x86์ cpuid๋ฅผ ์ฌ์ฉํ๋ ๊ณณ์ ์๊ณ ์๋ ํ ๊ณณ์ UTF-8์ด๋ผ๋ ํน์ ๋ฌธ์ ์ธ์ฝ๋ฉ์ ์ง์ ํฉ๋๋ค.
Re: Layering: ์ํํธ์จ์ด ์์ง๋์ด๋ก์ ์ฐ๋ฆฌ๋ ๋ํ ๊ณ์ธตํ์ ๋ชจ๋ํ๊ฐ ๊ทธ ์์ฒด๊ฐ ๋ชฉ์ ์ด ์๋๋ผ ์๋จ์ด๋ผ๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ํต์ฌ ์ฌ์์์ LEB128์ ๊น๋ํ๊ฒ ์ ์ธํ ์ ์์ต๋๋ค. ๊ทธ๊ฒ์ ๋ ํฐ ๊ณ์ธตํ์ ๋ชจ๋ํ๋ฅผ ์ ๊ณตํ ๊ฒ์ ๋๋ค. LEB128์ ํ๋ฆผ์์ด ์น ์ฌ์ฉ ์ฌ๋ก์ ํธํฅ๋์ด ์์ต๋๋ค.
Re: "์๋ฒ ๋๋ ์์คํ ": ์ ๊ณต๋ ์๋ DOS์ด์ง๋ง ๊ฐ์ ธ์ค๊ธฐ/๋ด๋ณด๋ด๊ธฐ ์ด๋ฆ์ ๋ํ UTF-8 ์๊ตฌ ์ฌํญ์ด DOS ์์คํ ์์ ์ํํด์ผ ํ๋ ์์ ์ ์ํํ๋ ๋ฐ ๋น์ฉ์ด ๋ง์ด ๋ค๊ฑฐ๋ ๋น์ค์ฉ์ ์ธ ๊ฒฝ์ฐ์ ์๋ ๋ฌด์์ ๋๊น?
Re: Islands: WebAssembly๋ ๋ํ ํน์ ์๋์์ ์ง์ ํ๊ณ , ๋ถ๋ ์์์ ์ง์, 8๋นํธ ์ฃผ์ ๋จ์๊ฐ ํ์ํ๋ฉฐ, ๋ถํ์ํ ๋ถ๋ด์ด ๋๋ ์ค์ ์ค์ ์ด ์์์๋ ๋ถ๊ตฌํ๊ณ ๋ค๋ฅธ ์ ํ์ ํฉ๋๋ค. WebAssembly๋ ๋ง์ ์ฌ๋๋ค์ด ๊ณต์ ํ ์ ์๋ ๊ณตํต ํ๋ซํผ์ ๊ฐํํ ๊ฒ์ผ๋ก ์์ํ ๋ ์ด์ ๊ฐ์ ์ ํ์ ํฉ๋๋ค.
Re: ๊ฐ์ ธ์ค๊ธฐ/๋ด๋ณด๋ด๊ธฐ ์ด๋ฆ์ ์์ ๋ฐ์ดํฐ ๊ตฌ์กฐ: ์ด๋ก ์ ์ผ๋ก ์ ์ฉํ์ง๋ง ๋ฐ์ดํฐ๋ฅผ ๋ฌธ์์ด๋ก ๋งน๊ธ๋งํ์ฌ ์ํํ ์๋ ์์ต๋๋ค. ๋งน๊ธ๋ง์ ๋ ํธ๋ฆฌํ์ง๋ง ์ด๋ ต์ง๋ ์์ต๋๋ค. ๋ฐ๋ผ์ ๊ฑฐ๊ธฐ์๋ ์ ์ถฉ์ ์ด ์์ง๋ง ํฐ ๊ฒ์ ์๋๋๋ค(๊ทธ๋ฆฌ๊ณ ํ๋ฆผ์์ด ๊ฐ์ ธ์ค๊ธฐ/๋ด๋ณด๋ด๊ธฐ์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ฒจ๋ถํด์ผ ํ๋ ์ผ๋ฐ์ ์ธ ํ์๊ฐ ์๋ ๊ฒฝ์ฐ ์ถ๊ฐ ๋ชฉ์ ์ผ๋ก ์๋ณ์๋ฅผ ์ถ๊ฐํ๋ ๊ฒ๋ณด๋ค ๋ช ์์ ๋ฉ์ปค๋์ฆ์ ๊ฐ๋ ๊ฒ์ด ๋ ์ข์ ๊ฒ์ ๋๋ค.)
Re: ๋ฐ์ด๋๋ฆฌ ํธํ์ฑ: ์ด ๋ณ๊ฒฝ์ด ์ฌ์ ํ ๊ฐ๋ฅํ๋ค๋ JF์ ์๊ฒฌ์๋ ๋์ํฉ๋๋ค. utf-8-decode-without-bom-or-fail์ ์๋ ๋์ ๋ณ๊ฒฝ์ด ์์์ ์๋ฏธํ๋ฉฐ ํ์ฌ ์๋ ค์ง ๋ชจ๋ wasm ์์ฐ์๋ ์ถ๋ ฅ์ ์น ์๋ฒ ๋ฉ๊ณผ ํธํ๋๋๋ก ์ ์งํฉ๋๋ค(๋ค๋ฅธ ์๋ฒ ๋ฉ๋ ์ง์ํ๋๋ผ๋). ์ด๋ฏธ UTF-8 ๋ด์ ๋จธ๋ฌผ๊ณ ์์ต๋๋ค.
UTF-8 ์ด๋ฆ์ ๋ํ ํน์ ์ ์์ ํ๋ PR์ด ์ด์ https://github.com/WebAssembly/design/issues/1016์ผ๋ก ๊ฒ์๋ฉ๋๋ค
#1016์ ์ฌ์ฉํ๋ฉด ์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
"dev-facing"์ "์์์ toolchain-facing"์ ์๋ฏธํ๋ฉฐ, ์ด๋ ์ฌ์ ์ ์ธ์ฝ๋ฉ์ ๋์ํด์ผ ํจ์ ์๋ฏธํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋๊ตฌ๊ฐ ์ธ์ฝ๋ฉ "ํ์ง"(์ฆ, ์ถ์ธก, ํนํ ์งง์ ๊ฐ์ ์ ์ฉ๋จ) ๋๋ ๋์ญ ์ธ ์ ๋ณด๊ฐ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ ์ฌ์ ํ ์ฌ์ฉ์์ ๋๋ค. ^_^
๋ง์ ๋๊ตฌ ์ฒด์ธ์ด ์ ๋์ฝ๋๋ฅผ ์ดํดํ์ง ๋ชปํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค๋ฉด ๋ค๋ฅธ ์์์ ๋ฐ์ด๋๋ฆฌ ์ธ์ฝ๋ฉ์ ์ดํดํ๋ค๊ณ ์๊ฐํ๋ ์ด์ ๊ฐ ํ์คํ์ง ์์ต๋๋ค. ๊ทธ๊ฒ์ด ๋น์ ์ ํ๊ณ๋ผ๋ฉด ์ด๋์์๋ 100% ์ง์๋๋ ASCII๋ฅผ ์ง์ ํ๊ณ ์๊ตฌํ์ญ์์ค. ASCII๋ก ์ ํํ๊ณ ์ถ์ง ์๋ค๋ฉด ASCII๊ฐ ์๋ ๋จ์ผ ์ธ์ฝ๋ฉ ์ฒด๊ณ์ธ UTF-8์ด ํ์ฉ๋๋ค๋ ์ฌ์ค์ ์ธ์ ํด์ผ ํฉ๋๋ค.
"์ด, ๋๋ถ๋ถ์ ๊ฒ์ด ASCII๋ง ์ง์ํ์ง๋ง ๋ง์ผ์ ๋๋น ํ์ฌ ๊ฐ๋ฐ์๊ฐ ์ํ๋ ๊ฒ์ ๋ฌด์์ด๋ ๋ฃ์ ์ ์๋๋ก ํ๊ฒ ์ต๋๋ค"๋ผ๊ณ ๋งํ๋ ๊ฒ์ด ๋ ์ธ๊ณ ๋ชจ๋์์ ์ต์ ์ ๋๋ค.