08. 자료형(data type) - 문자는 프로그램에서 어떻게 표현하여 사용하나요

 


강의 내용 정리

문자를 저장하고 불러오는 방법

  저장 : A (문자) => 65 (정수) .

    A 를 65의 값으로 저장하는 것을 인코딩

    65를 A로 불러오는것을 디코딩 이라고 한다.

 

  문자세트 : A를 어떤 정수값으로 저장할 것인가?

    A를 65라는 규칙을 정한 값으로 저장하는것을 아스키 코드 문자세트 라고 한다.

    ( 한글자 : 8 바이트 : 256bit ) ( 알파뱃 52개 + 특수문자 )

    초창기에는 나라별로 스스로의 문자에 맞는 문자 세트를 갖고 있었다. ( 대한민국 euc-kr )

    각 국의 문자세트를 표준화된 코드표로 정리하고, 웹상의 각국의 문자를 표현할때 문제가 없도록 하기 위해 나온것이 유니코드 :utf-8 , urf-16 입니다.

    utf-16 : 2바이트 (16비트 : 2의 16승) 이며 1바이트는 아스키 코드와 호환이 됩니다. 2바이트의 경우에는 유니코드만 호환이 되지만 1바이트주소 부분은 아스키코드와 완전하게 호환됩니다.

    utf-8 : 1~ 4바이트로 유동적으로 문자를 인식해서 문자 세트에 맞는 디코딩을 지원 . 통신에서 표준으로 사용하고 있습니다. 

    문자 타입의 값 입력

    'A' : 2byte (char타입으로 저장 됩니다)

   "A" : 문자"열"  (저장 데이터의 가장 마지막에 문자열의 끝을 나타네는 Null char가 존제합니다)

 

    char 에 들어가는 byte값 이내의 정수를 입력하면 . 따로 인코딩 절차가 없이 저장 되고.

    출력시에는 글자가 디코딩 됩니다.

 

 

 

강의 내용 체크

※인코딩이 다르면 이상한 문자가 출력되는 이유가 혹시 이런건 아닐까? 라는 추측에 대해서 검증

아스키 코드               0100 0100

유니 코드    0001 0200 0100 0100 (2바이트)   

에서 유니코드의 앞부분 0001 0200이 없다면 재대로 표현 되지만. 아닐경우 엉뚱한 아스키 코드의 값이 디코딩 되는것 인지 여러 커뮤니티에서 질문글을 등록해 놓고 답변을 종합해 보고 있습니다.

※ 커뮤니티 에서 없으면 문제세트 시트를 보고 . 디코딩 문자 세트 설정을 바꾸면서 테스트 해보면 될것 같습니다.

커뮤니티에서 얻은 답변

character set과 encoding을 구분해서 생각하셔야 합니다.

https://en.wikipedia.org/wiki/List_of_information_system_character_sets
 뭐 시간나시면 ascii EBCDIC 같은거 알아두시면 상식에 도움이 되구요.

unicode는 ascii를 확장하도록 설계되어 ascii의 문자들은 unicode에서 같은 값을 가지도록 되어 있습니다. 인코딩(utf-8 같은)을 거쳐도 그 값이 유지되며(정확히는 같게 할 수 있고 일부러 다르게도 되긴 합니다만 패스) 따라서 ascii character set의 문자들은 ascii든 utf-8이든 디코딩을 거치지 않아도 같은 값이라 별 문제없이 표현 됩니다.

euc-kr이나 iso-8859 같은 mbcs 방식도 ascii에 대해선 같은 이유로 문제가 없지만 나머지 영역은 디코딩 후 코드페이지를 찾으면 같은 글자에 대해 unicode나 각각의 문자셋은 다른 값을 가지기 때문에 다른 디코딩과 문자셋을 사용하면 외계어로 나오게 되는 것입니다.


참고로, utf-8이나 많은 멀티바이트 시스템들은 ascii에 포함되지 않은 문자들에 대해선 인코딩 최종값이 ascii 값과는 다르게 되도록 설계하며(첫 비트가 1입니다) 따라서 그런 글자들을 그냥 ascii로 보면 아주 박살이 나서 보이도록 되어 있습니다. 하지만 각각의 문자셋들끼리는 그런 게 없으므로 "뷁" 같은 이상한 글자로 보이는 경우가 허다합니다.

09. 자료형(data type)- 논리형과 자료형 없이 변수 사용하기


강의 내용 정리

 

자료형을 지정하지 않은 변수 만들기 (int, String 같은 지정된 데이터 타입을 사용하지 않기)

var 타입 : 지역변수 (로컬)로서 생성하고 사용할수 있는 호환용 데이터 타입

             어떤 값(숫자,문자,boolean)을 넣어도 자동으로 값에 적합한 데이터 타입을 확안하여 저장되는 타입.

  버전 10부터 사용 가능합니다.

자바스크립트나 파이선등의 유연한 변수타입을 갖고 있는 특징이 컴파일 언어에 적용된 경우에 해당합니다.

여기서 잠깐 파이선과 자바스크립트 같은 컴파일을 하지 않는 언어를 스크립트 언어라고 합니다.

var 사용법에서 스크립트 언어와 다른 점은 처음 데이터를 넣을때. var 변수의 타입이 정해 지기 때문에. 다른 타입을 한번더 넣으면 타입 오류가 발생하게 됩니다. 

boolean은 1바이트를 사용해서 yes or no 값을 저장할수 있습니다.

 

 


 

강의 내용 교차 검증

 


 

학습 타이머

 


 

캠 스터디

내용

공부하는 사진


 

스터디 그룹

https://open.kakao.com/o/g1mXVySd

 

온라인 강의 주소

패스트 캠퍼스에서 17일에 새로운 링크를 내려 주시면 수정 해야 할것 같습니다  : )

 

+ Recent posts