SBCS, MBCS์™€ WBCS / ์œ ๋‹ˆ์ฝ”๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ์ค‘์š”ํ•œ ์ด์œ 

๋ฐ˜์‘ํ˜•

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” Charset์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Charset ๋ถ€๋ถ„์€ ์กฐ๊ธˆ ๋‚ด์šฉ์ด ๋งŽ์œผ๋ฉด์„œ๋„ ํ—ท๊ฐˆ๋ฆฌ๋Š” ๋ถ€๋ถ„์ด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์—, ์ž˜ ์ˆ™์ง€ํ•˜์‹œ๊ณ , ๋ชธ์— ๋ฒ ์–ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ MBCS์™€ WBCS๋ฅผ ์–ด๋–ป๊ฒŒ ์ ์ ˆํžˆ ์กฐํ•ฉํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ์•Œ์•„๋ด…์‹œ๋‹ค.


๋ณดํ†ต ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ์ฝ”๋”ฉ์„ํ•˜๊ฑฐ๋‚˜ ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•˜๋‹ค๋ณด๋ฉด, "์ธ์ฝ”๋”ฉ"์ด๋ผ๋Š” ๋‹จ์–ด๋ฅผ ๋งŽ์ด ๋“ฃ๊ฒŒ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฌธ์„œ ์ž‘์„ฑ์—์„œ์˜ ์ธ์ฝ”๋”ฉ์€ Charset(์บ๋ฆญํ„ฐ์…‹)์„ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์ด๊ณ , ๋™์˜์ƒ ์ž‘์—…์—์„œ๋Š” ์˜์ƒ ํฌ๋งท ๋“ฑ์„ ์˜๋งˆํ•˜๋Š” ๊ฒƒ์ด์ง€์š”.


์ฝ”๋”ฉ์—์„œ ๋˜ํ•œ Charset์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๊ณผ๊ฑฐ์—๋Š” ASCII ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์˜€๊ณ , ์ง€๊ธˆ์€ ๊ฐ•ํ™”๋˜๊ณ , ํŽธํ•œ ์œ ๋‹ˆ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€์š”. ํ•˜์ง€๋งŒ Linux์— ์žˆ์—ˆ์„ ๋•Œ๋Š” ์ž˜ ๋ชฐ๋ž์—ˆ๋Š”๋ฐ, Windows์—์„œ ์™€๋ณด๋ฉด ์ตœ๊ทผ ๋ฌธ์ž์—ด ์ธ์ฝ”๋”ฉ์— ๋งž์ง€ ์•Š๊ฒŒ ์•„์ง๊นŒ์ง€๋„ ์•„์Šคํ‚ค ์ฝ”๋“œ๋กœ ์ฝ”๋”ฉํ•˜๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋Œ€๋ถ€๋ถ„์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ด์œ ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ณ , ์™œ ์œ ๋‹ˆ์ฝ”๋“œ๋ฅผ ๋” ์„ ํ˜ธํ•˜๋Š”์ง€์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ง€๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.



์•„์Šคํ‚ค ์ฝ”๋“œ

์•„์Šคํ‚ค ์ฝ”๋“œ๋ผ๋Š” ๊ฒƒ์€ ์ •ํ™•ํ•˜๊ฒŒ ๋ฌด์—‡์ผ๊นŒ์š”? ์—ฌ๋Ÿฌ๋ถ„๋“ค์€ ๊ทธ์ € ๋‹จ์–ด๋งŒ ๋“ค์œผ์…จ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•˜๊ฒŒ ์„ค๋ช…์„ ๋“œ๋ ค๋ณด์ž๋ฉด, ์•„์Šคํ‚ค ์ฝ”๋“œ๋Š” ANSI๋ผ๊ณ  ํ•˜๋Š” ๋ฏธ๊ตญ ๊ทœ๊ฒฉ ํ˜‘ํšŒ์—์„œ ์ง€์ •ํ•œ ํ‘œ์ค€ ์ฝ”๋“œ ์ฒด๊ณ„์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„๋“ค์€ ์ด ์ฝ”๋“œ ์ฒด๊ณ„๋ฅผ ํ†ตํ•ด์„œ C ์–ธ์–ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ, ๋ฌธ์ž๋ฅผ ํ‘œ์‹œํ•˜๊ณ , ์ˆซ์ž๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


What is ASCII ?


์•„์Šคํ‚ค ์ฝ”๋“œ๋Š” ์–ด๋Š ์šด์˜์ฒด์ œ์—์„œ๋“ ์ง€ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด C ์–ธ์–ด์—์„œ๋„ ๊ฐ„๋‹จํžˆ ์ ‘ํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


#include <stdio.h>
int main()
{
	char ch= 'a';

	printf("character number: %o \n", ch);
	printf("Character number: %d \n", ch);
	printf("Character number: %x \n", ch);

	return 0;
}


์•„๋ฌด ๋ฌธ์ž ํ•œ ๊ฐœ๋ฅผ ์ ์–ด์„œ 8์ง„์ˆ˜, 10์ง„์ˆ˜, 16์ง„์ˆ˜๋กœ ์ถœ๋ ฅํ•ด๋ณด๋ฉด, ์•„์Šคํ‚ค ์ฝ”๋“œ ๋ฌธ์žํ‘œ์— ์žˆ๋Š” ์ˆซ์ž๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„์Šคํ‚ค ์ฝ”๋“œ๋Š” 7๋น„ํŠธ ์ธ์ฝ”๋”ฉ์œผ๋กœ ์ด 2^7 = 128๊ฐœ์˜ ๋ฌธ์ž๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ค‘, 33๊ฐœ๋ฅผ ์ œ์™ธํ•˜๊ณ , ๊ณต๋ฐฑ์„ ํฌํ•จํ•˜์—ฌ 95๊ฐœ์˜ ์ถœ๋ ฅ ๊ฐ€๋Šฅํ•œ ๋ฌธ์ž๋“ค๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€ํ‘œ์ ์ธ ๋ฌธ์ž์…‹์œผ๋กœ SBCS๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. 


์ œ๊ฐ€ ์—ฌ๊ธฐ์„œ ์ˆซ์ž๋„ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ผ๊ณ  ๋ง์”€์„ ๋“œ๋ ธ๋Š”๋ฐ, ์—ฌ๊ธฐ์„œ ์ˆซ์ž๋Š” Integer๋‚˜ long๊ณผ ๊ฐ™์€ ์ •์ˆ˜ํ˜• ํƒ€์ž…์˜ ์ˆซ์ž๋ฅผ ์ด์•ผ๊ธฐํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋“ค์˜ ์ˆซ์ž๋Š” 4 Byte๋กœ ํ‘œํ˜„ํ•˜์ง€๋งŒ ์•„์Šคํ‚ค ์ฝ”๋“œ์—์„œ ์ˆซ์ž๋ฅผ ํ‘œํ˜„ํ•  ๊ฒฝ์šฐ, ๋‹ค๋ฅธ ๋ฌธ์ž์™€ ๋™์ผํ•˜๊ฒŒ 1 Byte๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‘œํ˜„ํ•œ๋‹ค๋Š” ์ ์„ ๊ผญ ์•Œ์•„๋‘๋„๋ก ํ•ฉ์‹œ๋‹ค.



SBCS, MBCS

๊ณผ๊ฑฐ, ์ฒ˜์Œ ๋ฌธ์ž์—ด์ด ์ปดํ“จํ„ฐ์— ํ‘œ๊ธฐ๋˜์—ˆ์„ ๋•Œ๋Š” ์˜๋ฌธ๊ณผ ์ˆซ์ž ๋ฟ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ตœ์ดˆ ๊ธฐ๊ณ„์–ด๊ฐ€ ์ˆซ์ž, BIOS๋‚˜ ๊ทธ๊ฒƒ์„ ์ข€ ๋” ๊ตฌ์ฒดํ™” ํ•œ ์–ด์…ˆ๋ธ”๋ฆฌ์–ด, ๋ชจ๋‘ ์˜์–ด ์•„๋‹ˆ๋ฉด ์ˆซ์ž์ž…๋‹ˆ๋‹ค. ์ข€ ๋” ๋ฐœ์ „ํ•ด์„œ B ์–ธ์–ด, C ์–ธ์–ด ๋“ฑ ๋˜ํ•œ ์˜์–ด์™€ ์ˆซ์ž๋กœ ํ‘œ๊ธฐ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๋•Œ ๋‹น์‹œ ์ปดํ“จํ„ฐ๋Š” SBCS๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.


SBCS๋Š” Single Byte Character Set์˜ ์•ฝ์ž๋กœ, ๋‹จ์ผ ๋ฌธ์ž ์ง‘ํ•ฉ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ผ ๋ฌธ์ž ์ง‘ํ•ฉ์ด๋ผ๋Š” ๊ฒƒ์€ ๋ฌธ์ž๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐ, 1 Byte๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ์ž ์ง‘ํ•ฉ์„ ์ด์•ผ๊ธฐํ•ฉ๋‹ˆ๋‹ค. ์ดˆ์ฐฝ๊ธฐ Unix ์šด์˜์ฒด์ œ์—์„œ๋„ ํ•ด๋‹น ๋ฌธ์ž์…‹์„ ์‚ฌ์šฉํ•˜์˜€์œผ๋ฉฐ ์ด charset์€ ASCII ์ฝ”๋“œ์— ์†ํ•ฉ๋‹ˆ๋‹ค.


MBCS๋Š” Multi Byte Character Set์˜ ์•ฝ์ž๋กœ, ๋ณต์ˆ˜ ๋ฌธ์ž ์ง‘ํ•ฉ์ด๋ผ๋Š” ๋œป์ด์ง€๋งŒ, ์˜๋ฌธ์ž์™€ ์ˆซ์ž๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐ๋Š” SBCS์ฒ˜๋Ÿผ 1 Byte๋กœ ํ‘œ์‹œํ•˜ ๋˜, ํ•œ๊ธ€๊ณผ ํŠน์ˆ˜๋ฌธ์ž ๋“ฑ์€ 2 Byte๋กœ ํ‘œํ˜„ํ•˜๋Š” ๋ฌธ์ž ์ง‘ํ•ฉ์ด๋ฉฐ ํ˜„์žฌ Windows ๋“ฑ์˜ ์šด์˜์ฒด์ œ์—์„œ ์ด ๋ฐฉ๋ฒ•์„ ์ฑ„ํƒํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ•œ๊ธ€ Windows๋„ ์•„์ง๊นŒ์ง€๋Š” MBCS๋ฅผ ์ฑ„ํƒํ•ฉ๋‹ˆ๋‹ค. ํ•œ๊ธ€์„ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๋Œ€ํ‘œ์ ์œผ๋กœ MBCS์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ธ์ฝ”๋”ฉ ๊ธฐ๋ฒ•์—๋Š” EUC-KR, CP949๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.



์œ ๋‹ˆ์ฝ”๋“œ

์•„์Šคํ‚ค ์ฝ”๋“œ ๋‹ค์Œ์œผ๋กœ ๋‚˜ํƒ€๋‚ธ Charset์€ ๋ฐ”๋กœ ์œ ๋‹ˆ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ์•Œ๊ณ  ์žˆ๋Š” ์œ ๋‹ˆ์ฝ”๋“œ๋Š” ํ•œ๊ธ€๊ณผ ์˜๋ฌธ์ž, ์ˆซ์ž๋ฅผ ์ƒ๊ด€ํ•˜์ง€ ์•Š๊ณ  ๋ชจ๋‘ 2 Byte๋กœ ํ‘œํ˜„ํ•œ๋‹ค๋Š” ๊ฒƒ๋งŒ์„ ์•Œ๊ณ  ๊ณ„์‹ค ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์œ ๋‹ˆ์ฝ”๋“œ๋Š” ์•„์Šคํ‚ค ์ฝ”๋“œ๋ณด๋‹ค ๋” ํ™•์žฅ๋œ ๋ฌธ์ž์…‹์œผ๋กœ, ์ „ ์„ธ๊ณ„ ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋‹ค๋Š” ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์•„์Šคํ‚ค ์ฝ”๋“œ๋Š” ์˜๋ฌธ์ž, ์ˆซ์ž ๋“ฑ์˜ ํ‘œํ˜„ ์ œํ•œ, ํ•œ๊ธ€์ด๋‚˜ ์•„๋ž์–ด ๋“ฑ์˜ 2 Byte ์ด์ƒ์˜ ๋ฌธ์ž ํ‘œํ˜„ ์ œํ•œ ๋“ฑ์ด ์žˆ์—ˆ์ง€๋งŒ, ์œ ๋‹ˆ์ฝ”๋“œ๋Š” ์ด ๋ชจ๋“  ๋ฌธ์ž๋“ค์˜ ํฌ๊ธฐ๋ฅผ ํ†ต์ผํ•˜๋ฉด์„œ ์ „ ์„ธ๊ณ„ ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ์ปดํ“จํ„ฐ์—์„œ ์ผ๊ด€๋˜๊ฒŒ ํ‘œํ˜„ํ•˜๊ณ  ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋œ ์‚ฐ์—… ํ‘œ์ค€ ๋ฌธ์ž์…‹์ž…๋‹ˆ๋‹ค.


What is Unicode ?


๊ตญ๋‚ด์—์„œ ๋Œ€ํ‘œ์ ์œผ๋กœ ์“ฐ๋Š” ์œ ๋‹ˆ์ฝ”๋“œ ๊ธฐ๋ฐ˜ ๋ฐฉ์‹์˜ ๋ฌธ์ž ์ธ์ฝ”๋”ฉ์—๋Š” UTF-8์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ Linux๋‚˜ Android์—์„œ ๊ฐœ๋ฐœ์„ ํ•ด๋ณด์‹  ๋ถ„๋“ค์ด๋ผ๋ฉด, UTF-8์ด๋ผ๋Š” ์ธ์ฝ”๋”ฉ์— ์ต์ˆ™ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์•„์ง Windows์—์„œ๋Š” ์ด ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์„ 100% ์‚ฌ์šฉํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.


๊ทธ ์ด์œ  ์ค‘์— ํ•˜๋‚˜๋Š” ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ๊ทธ๋žจ๋“ค์ด ์œ ๋‹ˆ์ฝ”๋“œ ์‹œ์ ˆ ํ”„๋กœ๊ทธ๋žจ์ด ์•„๋‹Œ, ์•„์Šคํ‚ค ์ฝ”๋“œ ์‹œ์ ˆ์— ๊ฐœ๋ฐœ๋œ ํ”„๋กœ๊ทธ๋žจ์ด๊ฑฐ๋‚˜ ์•„์ง๊นŒ์ง€๋„ Visual Studio์—์„œ ์œ ๋‹ˆ์ฝ”๋“œ ๊ธฐ๋ฐ˜์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜์ง€ ์•Š๊ณ , ์•„์Šคํ‚ค ์ฝ”๋“œ ๊ธฐ๋ฐ˜์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ํฌ์•ˆํ•˜๊ฒŒ๋„ ์ด์ œ ๋ง‰ ๊ฐœ๋ฐœ๋˜๊ณ , ์‚ฌ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ•œ Windows Universal App ๋งˆ์ €๋„, ๊ธฐ๋ณธ ๊ฐ’์„ ์•„์Šคํ‚ค ์ฝ”๋“œ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค..



WBCS

WBCS๋Š” Wide Byte Character Set์˜ ์•ฝ์ž๋กœ, ํ™•์žฅํ˜• ๋ฌธ์ž ์ง‘ํ•ฉ์ด๋ผ๋Š” ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์œ ๋‹ˆ์ฝ”๋“œ ๊ธฐ๋ฐ˜์˜ WBCS๋Š” ์•„์Šคํ‚ค ์ฝ”๋“œ์ฒ˜๋Ÿผ ์–ด๋–ค ๋ฌธ์ž์— ์ œ์•ฝ์„ ๋ฐ›์ง€ ์•Š๊ณ , ์ „ ์„ธ๊ณ„์˜ ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ์ปดํ“จํ„ฐ์— ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ Windows ๋ฟ๋งŒ์ด ์•„๋‹ˆ๋ผ, Linux, OS X, Android, iOS ๋“ฑ์˜ ์Šค๋งˆํŠธํฐ ์šด์˜์ฒด์ œ์—์„œ๋„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ๋Œ€ํ‘œ์ ์ธ ์ธ์ฝ”๋”ฉ ๋ฐฉ๋ฒ•์œผ๋กœ UTF-8์ด ์žˆ์Šต๋‹ˆ๋‹ค.



์™„์„ฑํ˜• ๋ฐฉ์‹๊ณผ ์กฐํ•ฉํ˜• ๋ฐฉ์‹

์•„์Šคํ‚ค ์ฝ”๋“œ์™€ ์œ ๋‹ˆ์ฝ”๋“œ ์ค‘ ์–ด๋Š ๊ฒƒ์ด ๋” ์ข‹์„๊นŒ? ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ์ด๋ ‡๊ฒŒ ๊ธ€๋กœ๋งŒ ์“ฐ๊ธฐ์—๋Š” ์–ด๋ ค์›€์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๊ทธ๋ฆผ์œผ๋กœ ํ•œ ๋ฒˆ ํ‘œํ˜„์„ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


์ถœ์ฒ˜: http://blog.ohmynews.com/q9447/tag/%EC%99%84%EC%84%B1%ED%98%95%20%EC%BD%94%EB%93%9C ์ธ์šฉ. 


์กฐํ•ฉํ˜• ๋ฐฉ์‹์€ ์ž์Œ๊ณผ ๋ชจ์Œ์„ ์ดˆ์„ฑ, ์ค‘์„ฑ, ์ข…์„ฑ์œผ๋กœ ์ผ์ผ์ด ๋ชจ๋“  ๊ฒƒ์„ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ, ๊ทธ๊ฒƒ๋“ค์„ ํ•˜๋‚˜์˜ ๋ฐ”์ดํŠธ๋กœ ์ธ์‹ํ•ฉ๋‹ˆ๋‹ค. ์ด 3๋ฐ”์ดํŠธ๋ฅผ ์ธ์‹ํ•˜๊ฒŒ ๋˜๋Š” ์…ˆ์ธ๋ฐ, ๋Œ€ํ‘œ์ ์œผ๋กœ UTF-8 ์ธ์ฝ”๋”ฉ์ด ์—ฌ๊ธฐ์— ํ•ด๋‹น ๋˜๊ณ , ์ด ๋ฐฉ์‹์€ ์œ ๋‹ˆ์ฝ”๋“œ ๋ฐฉ์‹์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ์œ ๋‹ˆ์ฝ”๋“œ ์กฐํ•ฉํ˜•์ด ์ด์— ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค.


์™„์„ฑํ˜• ๋ฐฉ์‹์€ ํ•˜๋‚˜์˜ ์ด๋ฏธ ๋งŒ๋“ค์–ด์ ธ ์žˆ๋Š” ํ•œ๊ธ€ ๋ฌธ์ž๋ฅผ ์ธ์‹ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ๊ฐ€๋ น, ํ•œ๊ธ€์„ ํ‘œ๊ธฐํ•  ๋•Œ, ๊ฐ€์žฅ ์‚ฌ์šฉ ๋นˆ๋„๊ฐ€ ๋†’์€ 2,360๊ฐœ์˜ ๋ฌธ์ž๋“ค๋งŒ ์ฝ”๋“œ์— ๋ฐ˜์˜ํ•˜๊ณ , ๋‚˜๋จธ์ง€๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ์—ฌ๊ธฐ์— ์žˆ๋Š” 2,360๋ฌธ์ž ์ค‘์— ์šฐ๋ฆฌ ํ•œ๊ตญ์–ด์— ์—†๋Š” ๋ท, ์•„ํ–ํ–, ๋“ฑ์˜ ์€์–ด๋“ค์€ ์‚ฌ์šฉํ•  ์ˆ˜๊ฐ€ ์—†๋Š” ์ด์œ ๊ฐ€ ๋ฐ”๋กœ ์—ฌ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์•„ํ–ํ– ๋“ฑ์˜ ์€์–ด๋Š” CP949์˜ ์•„์Šคํ‚ค ์ฝ”๋“œ์™€ UTF-8์˜ ์œ ๋‹ˆ์ฝ”๋“œ์—์„œ ์™„์„ฑํ˜•์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


์ด๋Ÿฐ ์ด์•ผ๊ธฐ๋ฅผ ํ•˜๋Š” ์ด์œ ๋Š” ๋‚˜์ค‘์— ์œˆ๋„์šฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๊ฒŒ ๋˜๋ฉด, ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ์ง์ ‘ ์œ ๋‹ˆ์ฝ”๋“œ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ๊ฒƒ์ธ์ง€, ์•„์Šคํ‚ค ์ฝ”๋“œ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ๊ฒƒ์ธ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ๊ทธ๊ฒƒ์— ๊ด€๋ จํ•œ ๊ฒƒ๊ณผ ์œ ๋‹ˆ์ฝ”๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ์™œ ์ค‘์š”ํ•œ์ง€์—์„œ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด ์ผ๋‹จ Base๋กœ ๋ชจ๋“  ์ด์•ผ๊ธฐ๋ฅผ ๋‹ค๋ค„๋ณด๋„๋ก ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.


์žก๋‹ด์„ ํ•˜๋‚˜ ํ•˜์ž๋ฉด, ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ์‚ฌ์šฉํ•˜๋Š” ํ•œ๊ธ€๊ณผ์ปดํ“จํ„ฐ์˜ ํ•œ๊ธ€ ์‹œ๋ฆฌ์ฆˆ๋Š” ํ˜„์žฌ, ์™„์„ฑํ˜• ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , ์กฐํ•ฉํ˜• ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ, ํ•œ๊ธ€ 2002๊ฐ€ ๋‚˜์˜ค๊ธฐ ์ด์ „๊นŒ์ง€๋Š” ์™„์„ฑํ˜• ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์˜€๊ณ , ์‚ผ์„ฑ์—์„œ ๊ฐœ๋ฐœํ•œ ํ›ˆ๋ฏผ์ •์Œ ๋˜ํ•œ, ์™„์„ฑํ˜• ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ „์˜ ์•„์Šคํ‚ค ์ฝ”๋“œ๊ฐ€ ์•„๋‹Œ UTF-8์˜ ์™„์„ฑํ˜• ์œ ๋‹ˆ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.


์ž ๊ทธ๋Ÿผ ์œ ๋‹ˆ์ฝ”๋“œ์™€ ์•„์Šคํ‚ค ์ฝ”๋“œ ์ค‘ ์–ด๋–ค๊ฒŒ ๋” ์ข‹์„๊นŒ์š”? ๋‹น์—ฐํžˆ ์œ ๋‹ˆ์ฝ”๋“œ๊ฐ€ ๋” ์ข‹๊ฒ ์ฃ . ์™œ๋ƒ๊ตฌ์š”? ํ™•์žฅ์„ฑ์ด ์ข‹๊ณ , ๋ชจ๋“  ๊ธ€์ž๋“ค์„ ๋‹ค ์“ธ ์ˆ˜ ์žˆ์œผ๋‹ˆ๊น์š”. ์‚ผ์„ฑ์˜ ํ›ˆ๋ฏผ์ •์Œ ํ”„๋กœ๊ทธ๋žจ์—์„œ ํ›ˆ๋ฏผ์ •์Œ์˜ ๊ถญ๋“ค์˜ ๊ธ€์”จ๋ฅผ ๋ชป์“ด๋‹ค๋Š” ๊ฒƒ์€ ํฐ ์น˜๋ช…ํƒ€์˜€์ฃ ...




์œ ๋‹ˆ์ฝ”๋“œ ๊ธฐ๋ฐ˜์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

์œˆ๋„์šฐ์—์„œ ์œ ๋‹ˆ์ฝ”๋“œ ๊ธฐ๋ฐ˜์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ด…์‹œ๋‹ค. ๊ทธ ์ „์—, ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์ด๋ž‘ ์–ด๋–ค ์ฐจ์ด๊ฐ€ ์žˆ๊ณ , ์œ„์— ๋‚ด์šฉ๊ณผ ์–ด๋–ค ์—ฐ๊ด€์ด ์žˆ๋Š”์ง€์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด, ๋ช‡ ๊ฐ€์ง€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค


#include <stdio.h>
int main()
{
	char str[] = "๋Œ€ํ•œ๋ฏผ๊ตญ2016";

	printf("Character Length: %d \n", sizeof(str));

	return 0;
}


์ž ์œ„ ์ฝ”๋“œ๋ฅผ ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ์ž‘์„ฑํ•ด์„œ ์ถœ๋ ฅํ•ด๋ณด๋ฉด, 13์ด ๋‚˜์˜ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์กฐ๊ธˆ ๋ถ€์—ฐ ์„ค๋ช…์„ ํ•ด๋ณด์ž๋ฉด, ์ €๋Š” str์ด๋ผ๊ณ  ํ•˜๋Š” ๋ฐฐ์—ด ๋ณ€์ˆ˜์— "๋Œ€ํ•œ๋ฏผ๊ตญ2016"์ด๋ผ๋Š” ๊ธ€์ž๋ฅผ ์ €์žฅํ•˜์˜€๊ณ , sizeof ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ, ๋Œ€ํ•œ๋ฏผ๊ตญ์˜ ๋ฐ”์ดํŠธ ๊ธธ์ด๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ ์ถœ๋ ฅํ•˜์˜€์Šต๋‹ˆ๋‹ค.





MBCS์—์„œ ํ•œ๊ธ€์€ 2๋ฐ”์ดํŠธ, ์ˆซ์ž/์˜๋ฌธ์ž๋Š” 1๋ฐ”์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ณด์‹œ๋‹ค์‹œํ”ผ ์šฐ๋ฆฌ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์•„์Šคํ‚ค ์ฝ”๋“œ ๊ธฐ๋ฐ˜์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•œ๊ธ€์„ ์‚ฌ์šฉํ•  ๋•Œ๋„, ์™„์„ฑํ˜•์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•œ๊ธ€ Windows์˜ ๊ฒฝ์šฐ, EUC-KR๋ณด๋‹ค ๋” ๋งŽ์€ ํ…Œ์ด๋ธ”์„ ์ œ๊ณตํ•˜๋Š” CP949๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, '๋ท'์ด๋‚˜ '์•„ํ–ํ–' ๋“ฑ์˜ ๊ธ€์ž๋„ ์ถœ๋ ฅ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


์‚ฌ์‹ค, CP949์™€ EUC-KR์€ ๊ฑฐ์˜ ๊ฐ™๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ ์ด ๋‘ ๊ฐœ๋ฅผ ์ด ํฌ์ŠคํŠธ์—์„œ ๋”ฐ๋กœ ๊ตฌ๋ถ„ํ•˜๋Š” ์ด์œ ๋Š” ๊ทธ๋ž˜๋„, CP949๊ฐ€ ๋” ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ํ•œ๊ธ€์˜ ๊ฐฏ์ˆ˜๊ฐ€ ๋” ๋งŽ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์œ„์—์„œ ์ œ๊ฐ€ ์ธ์šฉํ•œ ์„ค๋ช…๊ณผ ํ˜ผ๋™์ด ์—†๊ฒŒ๋” ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋”ฐ๋กœ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


๊ทธ๋ ‡๋‹ค๋ฉด, Visual Studio์—์„œ ์œ ๋‹ˆ์ฝ”๋“œ ๊ธฐ๋ฐ˜์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ?


Microsoft์—์„œ๋Š” ๊ธฐ์กด์˜ ์•„์Šคํ‚ค ์ฝ”๋“œ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ, ์œ ๋‹ˆ์ฝ”๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด, MBCS์™€ WBCS์˜ ์ž๋ฃŒํ˜•์„ ๊ตฌ๋ถ„ํ•ด์„œ ์‚ฌ์šฉํ•˜๋„๋ก Visual Studio๋ฅผ ์„ค๊ณ„ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ์œ ๋‹ˆ์ฝ”๋“œ ๊ธฐ๋ฐ˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ Visual Studio์—์„œ ํ•˜๋ ค๋ฉด, ์œ ๋‹ˆ์ฝ”๋“œํ˜•์— ๋งž๋Š” ์ž๋ฃŒํ˜•์„ ์จ์•ผ ํ•ฉ๋‹ˆ๋‹ค.


#include <stdio.h>
#include <string.h>
int wmain()
{
	wchar_t str[] = L"๋Œ€ํ•œ๋ฏผ๊ตญ2016";;

	wprintf(L"Character Length: %d \n", sizeof(str));

	return 0;
}


์œ ๋‹ˆ์ฝ”๋“œ ๊ธฐ๋ฐ˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ•œ ๋ฒˆ ์ž‘์„ฑํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•ด๋ณด๋ฉด, ์•„์Šคํ‚ค ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ์™€ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๊ฐ’์ด ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.





์œ ๋‹ˆ์ฝ”๋“œ๋Š” ๋ชจ๋“  ๋ฌธ์ž๋ฅผ 2 ๋ฐ”์ดํŠธ์”ฉ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. ์‹ฌ์ง€์–ด ๋ฐฐ์—ด์—์„œ ๋ ๋ฌธ์ž๋ฅผ ํ™•์ธํ•˜๋Š” NULL ์กฐ์ฐจ๋„ 2 ๋ฐ”์ดํŠธ๋กœ ์ธ์‹ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, 2 * 9 = 18 Byte๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. 




์œ ๋‹ˆ์ฝ”๋“œ ๊ธฐ๋ฐ˜์˜ ์ž๋ฃŒํ˜•๊ณผ ๋ฌธ๋ฒ•

์œ„์—์„œ ๋ดค๋“ฏ, ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์•„์Šคํ‚ค ์ฝ”๋“œ ๊ธฐ๋ฐ˜์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์€ ์‚ฌ์‹ค, Windows์—์„œ๋งŒ ์•„์Šคํ‚ค ์ฝ”๋“œ ๊ธฐ๋ฐ˜์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์ด๋ผ ํ•ฉ๋‹ˆ๋‹ค. ์œ ๋‹ˆ์ฝ”๋“œ ๊ธฐ๋ฐ˜์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์—์„œ ์ผ๋˜ wchar_t์˜ ๊ฒฝ์šฐ๋„, ์‚ฌ์‹ค, Windows์—์„œ๋งŒ ์œ ๋‹ˆ์ฝ”๋“œ ๊ธฐ๋ฐ˜์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์ด๋ผ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. FreeBSD์˜ ๊ฒฝ์šฐ, wchar_t๋Š” ์œ ๋‹ˆ์ฝ”๋“œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. locale๋งˆ๋‹ค wchar_t๊ฐ€ ์œ ๋‹ˆ์ฝ”๋“œ๊ฐ€ ๋ ์ง€, ๋‹ค๋ฅธ ์ฝ”๋“œ๊ฐ€ ๋˜๋Š”์ง€๊ฐ€ ๊ฒฐ์ •๋˜๊ธฐ ๋•Œ๋ฌธ์—, (์‹ฌ์ง€์–ด Linux์—์„œ wchar_t๋ฅผ ์‹คํ–‰ํ•˜๋ฉด, 4 ๋ฐ”์ดํŠธ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค) ์‚ฌ์‹ค์ƒ ์ด ๋ถ€๋ถ„์€ ์ผ๋‹จ, ์œˆ๋„์šฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ–ˆ์„ ๊ฒฝ์šฐ์—๋งŒ ์ด๋ผ๊ณ  ๊ฐ€์ •์„ ํ•˜๊ณ , ํฌ์ŠคํŠธ๋ฅผ ์ฝ์–ด์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


์™œ ์ด๋ ‡๊ฒŒ ๋‹ค๋ฅธ์ง€ ์กฐ๊ธˆ ์„ค๋ช…ํ•ด๋ณด์ž๋ฉด...


#include <stdio.h>
#include <string.h>
#include <locale.h>
int wmain()
{
	_wsetlocale(0, L"korean");
	wchar_t str[] = L"๋Œ€ํ•œ๋ฏผ๊ตญ2016";

	wprintf(L"Character Length: %d \n", sizeof(str));
	wprintf(L"%s \n", str);

	return 0;
}


์‚ฌ์‹ค, ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ์•„๊นŒ ์œ„์—์„œ ์‚ฌ์šฉํ–ˆ๋˜ ์ฝ”๋“œ๋Š” ๊ทธ์ € ์ผ๋ถ€์ผ ๋ฟ์ด๊ณ , ์ „๋ถ€๋ฅผ ํ‘œํ˜„ํ•˜์ž๋ฉด, ์œ„์™€ ๊ฐ™์€ ์ฝ”๋“œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค๋ฉด, setlocale ๋ถ€๋ถ„์ธ๋ฐ, setlocale ํ•จ์ˆ˜์˜ ์œ ๋‹ˆ์ฝ”๋“œํ˜•์€ _wsetlocale์ด๊ณ , ์ด ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด, ์—ฌ๋Ÿฌ๋ถ„๋“ค์€ locale์„ CP949๋กœ ์„ค์ •๋œ ์ƒํƒœ์ด์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ € ๊ฐ™์ด ์˜๋ฌธ Windows๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ์ด ํ•œ๊ธ€์„ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ, ๋งค์šฐ ๊ท€์ฐฎ์€ ์ง“์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.


ํ•˜์ง€๋งŒ Linux์—์„œ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ, ๊ธฐ๋ณธ locale์ด setlocale(0, "ko_KR.utf8")์ด๊ธฐ ๋•Œ๋ฌธ์—, ์ž๋™์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ์œ ๋‹ˆ์ฝ”๋“œ๋กœ ์ž‘์„ฑ์ด ๋˜๊ณ , ํ•œ๊ธ€์„ ์ถœ๋ ฅํ•  ๋–„๋„ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด wchar_t ๋“ฑ์˜ ์œ ๋‹ˆ์ฝ”๋“œ ์ž๋ฃŒํ˜•์ด๋‚˜ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ๋–„, ์ด ํฌ์ŠคํŠธ๋ฅผ ์ฐธ๊ณ ํ•˜๋Š” ๊ฒฝ์šฐ, ๋ฐ˜๋“œ์‹œ Windows์—์„œ๋งŒ ์‚ฌ์šฉํ•˜์‹œ๊ธฐ๋ฅผ ๊ถŒ๊ณ ํ•ฉ๋‹ˆ๋‹ค.




์œ ๋‹ˆ์ฝ”๋“œ ๊ธฐ๋ฐ˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ์ค‘์š”ํ•œ ์ด์œ 

Microsoft์—์„œ๋Š” ๊ธฐ์กด์— ๊ฐœ๋ฐœ๋œ ์œˆ๋„์šฐ ํ”„๋กœ๊ทธ๋žจ๋“ค์ด ๋Œ€๋ถ€๋ถ„ ์•„์Šคํ‚ค ์ฝ”๋“œ๋ฅผ ๊ธฐ๋ฐ˜ํ•˜๊ณ  ์žˆ๊ณ , ์ด๋“ค์˜ ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•ด Windows ์šด์˜์ฒด์ œ๋ฅผ 100% ์œ ๋‹ˆ์ฝ”๋“œ๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์ž…์žฅ์„ ๋ฐํžˆ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋žจ ์ค‘์—์„œ๋„ ์•„์Šคํ‚ค ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ๊ฝค ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ํ•œ ๋ฒˆ ์ฏค ํ•ด๋ณด์‹  ๊ฒŒ์ž„ ์ค‘์— ํ•˜๋‚˜, ๋ฐ”๋กœ ์Šคํƒ€ํฌ๋ž˜ํ”„ํŠธ1 ์‹œ๋ฆฌ์ฆˆ๋„ ์•„์Šคํ‚ค ์ฝ”๋“œ ๊ธฐ๋ฐ˜์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ์ง€๊ธˆ ํ˜„์žฌ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” Windows 7์ด๋‚˜ Windows 10 ์šด์˜์ฒด์ œ์—์„œ ์Šคํƒ€ํฌ๋ž˜ํ”„ํŠธ์˜ ํ•œ๊ธ€ ์ž…๋ ฅ์ด ์›ํ™œํžˆ ๋˜๋Š” ์ด์œ ๋Š” ๋ฐ”๋กœ ์ด ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.


ํ•˜์ง€๋งŒ, ์ด์ œ ์ ์  ์šด์˜์ฒด์ œ๋“ค์ด ์œ ๋‹ˆ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ถ”์„ธ๋กœ ์›€์ง์ด๊ณ  ์žˆ๊ณ , ์•„์ง๊นŒ์ง€ ์œ ์ผํ•˜๊ฒŒ Windows ์šด์˜์ฒด์ œ๋งŒ ๊ธฐ์กด ํ˜ธํ™˜์„ฑ ์œ ์ง€๋ฅผ ์œ„ํ•ด, ์•„์Šคํ‚ค ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์„ ๋ฟ์ž…๋‹ˆ๋‹ค. 


์™œ, ์œ ๋‹ˆ์ฝ”๋“œ๋กœ ๊ฐˆ์•„ํƒˆ๊นŒ์š”? ์‚ฌ์‹ค, ์œ ๋‹ˆ์ฝ”๋“œ๊ฐ€ ์กฐํ•ฉํ˜•์ด๋ผ์„œ, ๋” ๋งŽ์€ ๊ฒƒ์„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํ”„๋กœ๊ทธ๋žจ์— ์‚ฌ์šฉํ•˜๋ฉด, ์•„์Šคํ‚ค ์ฝ”๋“œ๋Š” ๋‚ด๊ฐ€ ํ‘œํ˜„ํ•˜๋Š” ๊ธ€์ž๋Œ€๋กœ ๋ฐ”์ดํŠธ ์ˆ˜๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ๊ทธ๋žจ์ด ๊ฐ€๋ณ๊ณ , ์œ ๋‹ˆ์ฝ”๋“œ๋Š” ๋ชจ๋“  ๋ฌธ์ž๊ฐ€ 2 Byte ~ 4 Byte์ด๊ธฐ ๋•Œ๋ฌธ์—, ํ”„๋กœ๊ทธ๋žจ์ด ๋” ๋ฌด๊ฑฐ์›Œ์ง€๋Š” ๊ฒƒ์ด ๋˜์ง€ ์•Š๋‚˜? ๋ผ๋Š” ์˜๋ฌธ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. ๋ฌผ๋ก  ์ด ๋ง์€ ํ™•์‹คํžˆ ํ”„๋กœ๊ทธ๋žจ์˜ ํฌ๊ธฐ๊ฐ€ ๋Š˜์–ด๋‚  ์ˆ˜๋Š” ์žˆ๊ฒ ์ง€๋งŒ, ๊ทธ๋ ‡๋‹ค๊ณ  ํ”„๋กœ๊ทธ๋žจ์ด ๋Š๋ ค์ง€๊ฑฐ๋‚˜ ๋ฌด๊ฑฐ์›Œ์ง€๊ธฐ ๊นŒ์ง€๋Š” ํ•˜์ง€ ์•Š๋Š”๋‹ค.


์˜คํžˆ๋ ค, ์ด๋Ÿฐ ํ‘œํ˜„๋ ฅ์ด์•ผ ๋ง๋กœ, ์—ฌ๋Ÿฌ๋ถ„๋“ค์˜ ํ”„๋กœ๊ทธ๋žจ์ด ๋‹ค๊ตญ์–ด ์–ธ์–ด๋ฅผ ์ง€์›ํ•˜๋Š” ๋ฐ, ์œ ๋ฆฌํ•ด์งˆ ์ˆ˜ ์žˆ๊ณ , ์ƒˆ๋กœ์ด ๊ฐœ๋ฐœ๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ๊ณผ ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ์ข‹์€ ์ •์ ์ด ๋  ์ˆ˜๋„ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์•„์ง๊นŒ์ง€๋„ ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์ด๋‚˜ ๊ฐœ๋ฐœ์ž๋ฅผ ๊ฟˆ๊พธ๋Š” ํ•™์ƒ๋“ค์ด ์œ ๋‹ˆ์ฝ”๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์ค‘์š”์„ฑ์„ ๋งŽ์ด ์•Œ์ง€ ๋ชปํ•˜๋‹ค๋Š”๊ฒŒ ํ˜„์‹ค์ด๋‹ค.


๊ทธ๋ ‡๋‹ค๋ฉด, ์šฐ๋ฆฌ๊ฐ€ ํ•œ๊ธ€์„ ์ง€์›ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ์„ ์œ„ํ•ด, ์œ ๋‹ˆ์ฝ”๋“œ์™€ ์•„์Šคํ‚ค ์ฝ”๋“œ๋ฅผ ๋”ฐ๋กœ ๊ฐœ๋ฐœํ•ด์•ผํ• ๊นŒ? ๊ทธ๋Ÿฌ๋ฉด ์‹œ๊ฐ„๊ณผ ์ธ๋ ฅ ์†Œ๋ชจ๊ฐ€ ์žฅ๋‚œ์•„๋‹ํ…๋ฐ.. ์šฐ๋ฆฌ๊ฐ€ ๊ฐœ๋ฐœํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์— ์•„์Šคํ‚ค ์ฝ”๋“œ์™€ ์œ ๋‹ˆ์ฝ”๋“œ๋ฅผ ๋™์‹œ์— ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ์‰ฝ๊ฒŒ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ์—†๋Š” ๊ฒƒ์ผ๊นŒ?




์œ ๋‹ˆ์ฝ”๋“œ์™€ ์•„์Šคํ‚ค ์ฝ”๋“œ๋ฅผ ๋™์‹œ์— ์ง€์›ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ

์‚ฌ์‹ค, ์ œ๋ชฉ์ด ์กฐ๊ธˆ ์šฐ์Šต์ง€๋งŒ, ๋™์‹œ์— ์ง€์›ํ•œ๋‹ค๊ธฐ ๋ณด๋‹ค๋Š” ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ๋˜‘๊ฐ™์€ ์ž๋ฃŒํ˜•์„ ์“ฐ๊ณ , ์œ ๋‹ˆ์ฝ”๋“œ์™€ ์•„์Šคํ‚ค ์ฝ”๋“œ ๊ธฐ๋ฐ˜์˜ ์œˆ๋„์šฐ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์—ฌ๊ธฐ์— ๋‚จ๊ธฐ๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ Microsoft์—์„œ ์ฑ„ํƒํ•˜๊ณ  ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด์ž, MSDN์—์„œ ์ด๋ ‡๊ฒŒ ๊ถŒ์žฅํ•˜๊ณ  ์žˆ๊ณ , ์šฐ๋ฆฌ๋Š” ์ด๋ฅผ ์œ„ํ•ด ์ƒˆ๋กœ์šด ํ—ค๋” ํŒŒ์ผ๊ณผ ๋˜ ๋‹ค๋ฅธ ์ƒˆ๋กœ์šด ์ž๋ฃŒํ˜•์„ ๋ฐฐ์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค.


#include <tchar.h>


์ €๋Š” Visual Studio 2015 Update 2 ๋ฒ„์ „์„ ๊ธฐ์ค€์œผ๋กœ, ์„ค๋ช…์„ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ๋Š” Visual Studio ๋ฒ„์ „๋งˆ๋‹ค ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Œ์„ ๋ฐ˜๋“œ์‹œ ์ฐธ๊ณ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.


tchar.h ํ—ค๋” ํŒŒ์ผ์€ ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ์•„์Šคํ‚ค ์ฝ”๋“œ์™€ ์œ ๋‹ˆ์ฝ”๋“œ์˜ ๋™์‹œ ์ง€์›ํ•  ์ˆ˜ ์žˆ๋Š” ์‰ฌ์šด ๊ฐœ๋ฐœ์„ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ Visual Studio ๋…์ž์ ์ธ ํ—ค๋” ํŒŒ์ผ๋กœ ์˜ค์ง Windows์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 


#include <stdio.h>
#include <locale.h>
#include <tchar.h>
int _tmain()
{
	_tsetlocale(0, _T("korean"));
	_TCHAR str[] = _T("๋Œ€ํ•œ๋ฏผ๊ตญ2016");

	_tprintf(_T("Character Length: %d \n"), sizeof(str));
	_tprintf(_T("%s \n"), str);

	return 0;
}


๊ธฐ์กด ํ•จ์ˆ˜์™€ ๋‹ค๋ฅธ ์ ์ด ์žˆ๋‹ค๋ฉด, ์•ž์— "_t"๊ฐ€ ๋ถ™์—ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜ ํ•œ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค๋ฉด, ๋ฌธ์ž์—ด์— ๊ฐ๊ฐ _T๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. _T๋Š” ์œ ๋‹ˆ์ฝ”๋“œ์ผ ๋•Œ, L์ด ๋ถ™๊ณ , ์•„์Šคํ‚ค ์ฝ”๋“œ์ผ ๋•Œ๋Š” ๋ถ™์ด์ง€ ์•Š๋Š” ์˜ˆ์•ฝ์–ด๋กœ tchar.h์—์„œ ์ œ๊ณตํ•˜๋Š” ๋งคํฌ๋กœ ์ž…๋‹ˆ๋‹ค.


์—ฌ๊ธฐ์„œ ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ์•„์Šคํ‚ค ์ฝ”๋“œ๋กœ ๋นŒ๋“œํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ํ”„๋กœ์ ํŠธ์˜ ์†์„ฑ์—์„œ Multi byte Character Set์„ ์„ค์ •ํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.




Multi-Byte ์„ค์ • ์ดํ›„, ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•œ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.



2 * 4 = 8 Byte + 1 * 5 = 5 Byte ํ•˜์—ฌ, 13์ด ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๋ฐ˜๋Œ€๋กœ ์œ ๋‹ˆ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋„, ํ”„๋กœ์ ํŠธ ์†์„ฑ์—์„œ Chracter Set์„ Unicode Character Set์œผ๋กœ ์„ค์ •ํ•ด์ฃผ๊ณ , ์ปดํŒŒ์ผ ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.




์œ ๋‹ˆ์ฝ”๋“œ๋กœ Character Set์„ ๋ณ€๊ฒฝํ•ด์ฃผ๊ณ , ์ปดํŒŒ์ผํ•˜์—ฌ, ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•ด๋ด…์‹œ๋‹ค.




2 * 9 = 18 ์ด ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.





๋์œผ๋กœ....

์—ฌ๊ธฐ๊นŒ์ง€, ์œ ๋‹ˆ์ฝ”๋“œ ๊ธฐ๋ฐ˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ดค์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค, ์ด ๋ถ€๋ถ„์€ ์ œ๊ฐ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜๋ฉด์„œ ๊ต‰์žฅํžˆ ์‹ซ์–ดํ•˜๋Š” ๋ถ€๋ถ„์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋‹จ, ์„ค๋ช…ํ•˜๊ธฐ๊ฐ€ ๊ต‰์žฅํžˆ ๋ณต์žกํ•˜๊ณ , ์ด ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜๋ ค๋ฉด ๋„ˆ๋ฌด๋‚˜ ๋งŽ์€ ๊ธ€์„ ์จ๋‚ด๋ ค๊ฐ€์•ผ ํ•˜๋Š”๋ฐ, ๊ทธ๋Ÿฌ๊ธฐ๊ฐ€ ์‰ฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฌด์—‡๋ณด๋‹ค ์˜๋ฌธ Windows์™€ ํ˜ธํ™˜์„ฑ์ด ๋–จ์–ด์ ธ์„œ, ์ด๋ž˜์ €๋ž˜ ์„ค์ •ํ•ด์•ผํ•  ๊ฒƒ๋„ ๋งŽ๊ณ , ๋˜, ์œ ์ผํ•˜๊ฒŒ Windows๋งŒ ์•„์ง๊นŒ์ง€ ์•„์Šคํ‚ค ์ฝ”๋“œ๋ฅผ ๊ณ ์ง‘ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์„ ์จ์•ผํ•œ๋‹ค๋Š” ๊ฒƒ๋„ ๊ต‰์žฅํžˆ ๋ฒˆ๊ฑฐ๋กญ๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.


Ps: (2018. 4. 10): ์ด ๊ธ€์„ ํฌ์ŠคํŒ…ํ•œ์ง€๊ฐ€ ๊ต‰์žฅํžˆ ์˜ค๋ž˜๋˜์—ˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ด ๊ธ€์— ๊ด€์‹ฌ์„ ๊ฐ€์ ธ์ฃผ์‹œ๋Š” ๋ถ„๋“ค์ด ๋งŽ์œผ์‹  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์˜คํƒ€, ์ง€์ ์— ๋Œ€ํ•œ ๋ถ€๋ถ„์€ ์–ธ์ œ๋“ ์ง€ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ธ”๋กœ๊ทธ๋Š” ์—ฌ๋Ÿฌ๋ถ„๋“ค์—๊ฒŒ ์œ ์ตํ•œ ๊ธ€๊ณผ ์ €์˜ ๊ฐœ๋ฐœ์‚ฝ์งˆ๊ธฐ๋ฅผ ์˜ฌ๋ฆฌ๊ธฐ ์œ„ํ•ด ์šด์˜ํ•˜๊ณ  ์žˆ๋Š” ๋ธ”๋กœ๊ทธ์ด๋ฉฐ ์ € ๋˜ํ•œ ๋ชจ๋“  ๊ฒƒ์„ ์™„๋ฒฝํ•˜๊ฒŒ ์†Œํ™”ํ•ด๋‚ด์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์ž˜๋ชป๋œ ๊ฒƒ์ด ์žˆ๋‹ค๋ฉด ๊ทธ๊ฒƒ์„ ๋ฐ”๋กœ ์•Œ๋ฉด์„œ ๊ณต๋ถ€ํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๊ณ  ์ €๋Š” ๊ทธ๋Ÿฐ ๊ธฐํšŒ๋ฅผ ๋ฐœํŒ์‚ผ์•„ ๋‚˜์•„๊ฐ€๊ณ ์ž ์˜ฌ๋ฐ”๋ฅธ ์ง€์ (์ถœ์ฒ˜๊ฐ€ ๋ช…ํ™•ํ•˜๊ณ  ๊ทผ๊ฑฐ์žˆ๋Š” ์ œ์‹œ) ์— ๋Œ€ํ•ด์„œ๋Š” ๊ฐ€๋Šฅํ•œํ•œ ์ˆ˜์šฉํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค.


์—ฌ๊ธฐ๊นŒ์ง€ ๊ธ€ ์ฝ์–ด์ฃผ์‹  ๋ชจ๋“  ๋ถ„๋“ค ์ˆ˜๊ณ  ๋งŽ์œผ์…จ์Šต๋‹ˆ๋‹ค.



์ฐธ๊ณ : http://blog.ohmynews.com/q9447/tag/%EC%99%84%EC%84%B1%ED%98%95%20%EC%BD%94%EB%93%9C ์ผ๋ถ€ ์ธ์šฉ.

๋ฐ˜์‘ํ˜•
TAGS.

Tistory Comments