NAVER

질문 미국에서는 실제로 아스키코드를 쓰나요?
비공개 조회수 1,331 작성일2019.06.24
정보시간에 문자코드로 아스키코드, 유니코드로는 UTF-8, UTF-16 등을 쓴다고 하는데 궁금하네요.

문자 메세지를 칠때, 7비트를 먹는 아스키코드를 쓰면 8글자를 써야 그제야 7바이트가 되는건가요?

아니면 그냥 공용으로 UTF-8 을 쓰나요?
 아스키코드는 1바이트로 하고, 나머지는 2~4만큼 쓰니까 이게 실질적으로 더 편리할 것 같은데

이 분야에 대해 아무 지식 없는 사람은 답변 자제해주세요.
프로필 사진

답변자님,

정보를 공유해 주세요.

1 개 답변
1번째 답변
프로필 사진
니면상신기
별신
본인 입력 포함 정보

1. 아스키는 국가별로 쓰는게 아니라, 해당 운영체제나 어플리케이션이 아스키셋을 지원하느냐 안하느냐의

문제로, 아스키셋은 거의 대부분의 시스템에서 활용됩니다.

2. 원래 컴퓨터의 자료 최소단위는 1byte = 8bit 입니다. 그 중에 MSB(최상위 비트가 0 인경우, 각 비트는 0과1 두가지 밖에 표현하지 못함)를 제회하고 하위 7비트를 씁니다. 고로 1byte 가 나타낼 수 있는 문자의 최대개수는

2^7 즉 128개 입니다. 8글자를 써야 7 바이트가 되나요? 라는 말은 아직 비트가 뭔지 바이트가 뭔지를 모르시는 듯합니다.

1byte = 8bit 라는 건 2^8 즉 256가지의 숫자를 표현할 수 있다라는 말이고, 이걸 컴퓨터 콘솔(혹은 운영체제 자체) 에서 "문자형 자료형"이다 라고 지정하면 해당 숫자에 아스키 문자를 대입하여 표시할 뿐 입니다.

즉 아스키 코드값으로 64 가 문자 'a' 입니다. 즉 컴퓨터에게 숫자 64 와 'a' 는 같은겁니다. 다만 이걸 숫자로 찍어!!

라는 커맨드가 들어오면 64로 찍는것이고, 문자로 찍어!! 라는 커맨드가 들어오면 'a'라고 찍는겁니다. 즉 사람이

보기에만 다른거에요.

그러면 왜 아스키 코드는 숫자와 일부 특수문자, 그리고 영문자만 있느냐!!!.. 그건 컴퓨터 문자체계를 미국놈이

만들었으니까 그런거겠죠?

3. UTF-8 같은건 다국어 때문입니다. 아스키 문자는 최상위 비트가 0인 7비트로 만든 문자라고 했습니다.

이것이 부족하다 느낀 ISO에서는 최상위 비트가 1인 경우도 문자를 매칭하여 확장아스키 라는것을 만들었습니다만

사실 잘 안쓰이는 문자가 많았고, 각구에서는 이를 자국의 언어를 표기하는데 사용합니다.

즉 최상위 비트가 1인 경우를 멀티바이트라고 합니다. 한글의 경우 두 개의 연속된 바이트의 최상위 비트가

1 인경우 두 개를 합쳐서 하나의 한글을 형성합니다. 그래서 윈도우즈의 기본콘솔의 경우 한글은 한 글자당

2개의 바이트를 사용합니다. 다만 이는 한글화된 os나 플랫폼에만 유효합니다. 중국은 3개의 1byte 로

하나의 문자를 지시할 수도 있고, 한자가 워낙 많다보니 4개로 하나의 문자를 지시할 수도 있습니다.

일본어 처럼 몇 자 안되는 언어는 1byte로도 하나의 문자로 매칭시킬 수 있죠.

즉 똑같은 아스키코드로 문자를 작성한다 하더라도 해당 시스템이 지원하는 방식에 따라 글자가 깨져버립니다.

그래서 예전에는 한글dos, 영문dos, 일본dos 이런식으로 운영체제에 국가표시가 있었습니다. 일본 dos에

맞춰서 프로그래밍 된 소프트웨어의 일본어는 한글dos 에서는 다 깨지는 거죠. 다만 영문dos에서 사용하는

최상위 비트가 0인 아스키값은 모든 os에 공통으로 적용되므로 영문dos에서 작성된 문서나(외국어는

사용조차 안되죠.) 프로그램은 각국의 os에서도 잘 동작합니다.

4. 유니코드는 이러한걸 보완하기 위해 고안된 것입니다. 애초에 자료형이 큰 테이블을 만들어놓고 거기에

모든언어의 모든 문자를 다 매칭시켜 놓는것입니다. 즉 유니코드 테이블 사용시 특정한 언어변환 없이 타국의

언어를 모두 표현 가능합니다. 지금 님이 일본어 사이트를 간다고 해서 일본어 패치를 한다거나 하지는 않죠?

패치의 경우도 마찬가지.. 아스키를 이요한 멀티바이트 이용시 국가별로 사용하는 바이트 수 자체가 다르기

때문에 언어를 변경할때 소프트웨어를 제컴파일 하거나 파일에 저장된 내용의 경우 컨버터를 통해서 변환해야

했습니다. 지금은 그럴 필요가 없죠. 그냥 언어파일을 바꿔주기만 하면 됩니다. 어차피 유니코드는 동일한 길이를

사용하므로..

참고로 유니코드가 일반화 된데는 "하드웨어 가격의 하락" 과 "하드웨어의 고속화" 가 동시에 진행되었기 때문에

가능합니다. 예전에는 1byte 라도 줄이기 위해서 "마이크로 코딩" 이라는걸 했습니다. 빌게이츠가 했던 유명한

말이 있습니다. 앞으로도 메인 메모리는 640KByte(1메가도 안되는 양)면 충분하다!!! 는 빗나갔죠. 다만 그때는

그 만큼 메모리가 매우 비싼 자원이었습니다. 수 기가의 메모리도 몇 만원 안하는 지금 시점에 1byte나 4byte나 그저 "티끌과도 같은 존재" 일 뿐이죠.

현대에 메모리 용량을 걱정하며 프로그래밍을 하는 프로그래머는 아직도 필요되는 마이크로 프로그래밍을 하는 영역의 일부 프로그래머들 뿐입니다. (s 메모리에 프로그래밍 하는 사람들, s 메모리는 아직도 겁나 비쌈, s메모리로

메인 메모리를 16기가 정도 맞출려면 아마 수십억 할 것 임.. 뭐 계산해본건 아니고.. 그러지 않을까.. - -;;)

2019.06.26.

  • 채택

    질문자가 채택한 답변입니다.

도움이 되었다면 UP 눌러주세요!
UP이 많은 답변일수록 사용자들에게 더 많이 노출됩니다.