본문 바로가기
JavaScript

자바스크립트 아스키코드 (ASII)

by dev정리 2022. 9. 27.

ASCII (American Standard Code for Information Interchange, 미국 정보 교환 표준 부호)

아스키 코드는 1963년 미국 ANSI에서 표준화한 정보교환용 7비트 부호체계이다. 인쇄전신기(Teleprinter)[2]를 통한 전신(통신)에서 사용되기 시작했고, 8비트 컴퓨터에서도 활용되어 오늘날 문자 인코딩의 근간을 이루게 된다.

000(0x00)부터 127(0x7F)까지 총 128개의 부호가 사용된다. 1바이트를 구성하는 8비트 중에서 7비트만 쓰도록 제정된 이유는, 나머지 1비트를 통신 에러 검출을 위한 용도로 비워두었기 때문이다. Parity Bit라고 해서, 7개의 비트 중 1의 개수가 홀수면 1, 짝수면 0으로 하는 식의 패리티 비트를 붙여서, 전송 도중 신호가 변질된 것을 수신측에서 검출해낼 수 있도록 하였다. 일종의 원시적인 CRC 체크섬이라고 할 수 있다.

영문 키보드로 입력할 수 있는 모든 기호들이 할당되어 있는 가장 기본적인 부호 체계이다. 매우 단순하고 간단하기 때문에 어느 시스템에서도 적용가능하다는 장점이 있다. 8비트 컴퓨터에서는 아스키 코드에 1비트를 더해 더 많은 문자를 표현할 수 있는 여지가 생겼고, 아스키 코드에 없는 문자를 추가해 "코드페이지"를 제정하였다. IBM PC에서는 "Codepage 437"(라틴어, 음성기호, 수학기호, 괘선, 특수문자 등 추가)을 사용했고, 확장된 아스키 코드의 사실상 표준이 되었다. 이외 각 국의 언어에 따라 다양한 코드페이지가 존재하는데, 대부분 아스키 코드에 기반하여(가급적 훼손하지 않고) 제작된다.

한글 인코딩은 2바이트 이상을 써야 가능했기 때문에 아스키 코드를 건드릴 수 밖에 없었고, 초창기에는 글자 깨짐 문제가 종종 발생하였다. 코드페이지(CP949 등)를 맞춰주지 못하면 역시 글자 깨짐이 발생했고, 해외게임을 할 때 특히 그러했다. 유니코드가 제정되면서 글자 깨짐은 끝날 줄 알았지만 멀티 바이트 엔디안 문제로 글자는 또 깨졌고, ASCII가 호환되는 UTF-8이 널리 사용되면서 글자 깨짐은 막을 내리게 된다.

ASCII와 CP437에는 CLI 인터페이스에서도 그림을 그릴 수 있게 각종 특수 문자가 존재하는데, 이를 적극적으로 활용하여 예술로 승화시킨 것을 아스키 아트라 부른다. Text only 형태의 게시판에서 자주 보였다.

 

아스키 코드 - 나무위키

IBM CP437 아스키 코드에는 제어 문자 자리에 Null(0x00)을 제외한 32개의 특수문자를 배당해 놓았다. 물론 그렇다고 해서 제어 문자의 기능이 없어지는 것은 아니며, 프로그램이나 글꼴에 따라서는

namu.wiki

아 위키백과 너는 왜이렇게 똑똑해서 나에게 어렵게 설명하는가...

요는 만약 내가 a를 눌렀을때 컴퓨터가 알아듣는 말로 인코딩 한다는거 아닌가... 쉽게 알려줘 제발...

문자열 => 아스키코드

String.prototype.charCodeAt()

charCodeAt() 메서드는 주어진 인덱스에 대한 UTF-16 코드를 나타내는 0부터 65535 사이의 정수를 반환합니다.

 

 

String.prototype.charCodeAt() - JavaScript | MDN

charCodeAt() 메서드는 주어진 인덱스에 대한 UTF-16 코드를 나타내는 0부터 65535 사이의 정수를 반환합니다.

developer.mozilla.org

'ABC'.charCodeAt(0); // returns 65

 

아스키코드 => 문자열

String.fromCharCode()

String.fromCharCode() 메서드는 UTF-16 코드 유닛의 시퀀스로부터 문자열을 생성해 반환합니다.

 

String.fromCharCode() - JavaScript | MDN

String.fromCharCode() 메서드는 UTF-16 코드 유닛의 시퀀스로부터 문자열을 생성해 반환합니다.

developer.mozilla.org

String.fromCharCode(65, 66, 67);  // "ABC"
String.fromCharCode(0x2014)       // "—"
String.fromCharCode(0x12014)      // 숫자 '1'은 무시해서 "—"

 

나는 정말 가끔 썼지만 알아두면 유용하다..