Java 아스키코드 출력 - java aseukikodeu chullyeog

아스키코드(American Standard Code for Information Interchange, ASCII)는 아스키의 말을 풀어 썼을 때 알 수 있는 것처럼 오로지 미국을 위한 표준 부호였다. 초창기 컴퓨터는 영어권에서 사용됐으며, 당시 그들은 전세계의 말을 쓸 필요가 없다 생각했기에 1bit의 체크섬(Checksum)용을 제외하고 라틴 문자, 숫자 그리고 특수 문자들을 128개 모와 7bit의 아스키코드를 만들었다.

 

Java 아스키코드 출력 - java aseukikodeu chullyeog
아스키코드 표

 

그러나, 컴퓨터의 발달로 전세계가 각자 부호표를 만들어 수많은 캐릭터셋(ex: euckr, cp949)을 만들게 되었고 이 캐릭터셋은 최근 10년 들어서 UTF-8로 대동단결하게 된다. 참고로 10년전만 하더라도 수많은 국내 사이트들이 EUC-KR로 사이트를 운영했었고, UTF-8로 가면서 많은 일들이 벌어졌었는데 바이트수가 커졌기 때문에 검색엔진 및 DB들이 느려지거나 메모리가 부족하는 현상들이 빈번하게 발생하였던 적이 있었다.

 

유니코드(Unicode)

유니코드라는 것은 즉 전세계의 코드표를 모두 모와 한번에 제공하자라는 개념이며, 흔히 UTF-8을 유니코드와 동일선상으로 이해하지만 UTF-8은 유니코드의 한 방법이며, 워낙 대중적이기 때문에 이렇게 이해하더라도 큰 문제는 없다. 초창기 rest의 개념을 json으로 리턴하는 것으로 이해하는 사례가 많은 것과 비슷한 맥락이라 할 수 있다.

 

유니코드는 기본적으로 16비트(bit) 즉, 2바이트(Byte)로 단어들을 표현하였다. 1Byte는 256bit이기에, 즉 2Byte는 256 x 256 = 65,536 글자를 표현할 수 있다. 

 

UTF-8

유니코드의 대표적인 문자 인코딩으로 UTF-8(Universal Coded Character Set + Transformation Format 8-bit)이 있기 때문에 UTF-8에 대해서 설명을 하자면, 한 문자를 표현하기 위해서 1바이트에서 4바이트까지를 사용한다. 예를 들어 아스키코드에 포함된 문자들은 1바이트만으로 표시된다.

 

유니코드는 기본적으로 U+라는 표식을 붙이며 나머지 16진수의 숫자값을 4개 더해서 표식을 한다. 16진수를 2번 곱하면 256이 되기에 1Byte가 되며, 16진수 숫자가 4개면 2Byte가 되기에 실질적으로 U+2Byte 16진수로 인식을 하면 되나 최근 들어서 문자가 계속 증가하였기 65536 범위가 넘어셨으면 이를 위해 평면이라는 개념이 추가 생겨났다.

 

Java 아스키코드 출력 - java aseukikodeu chullyeog
유니코드 평면

우리가 일반적으로 아는 유니코드는 다국어 기본 평면(BMP)이며 추가로 늘어난 평면들은 U+와 2바이트 조합에 숫자들이 추가된 것을 볼 수 있다. 즉 다국어 기본 평면이 아니면 유니코드는 4바이트까지 확장이 된다

자바Java] 아스키 코드표 출력, 문자표 만들기: ASCII Table Generator

Thursday, October 12, 2006

스폰서 링크

자바로 아스키 코드 (ASCII Code)를 화면에 출력하는 프로그램입니다.

아스키 7번 코드는 삑하는 비프음(Beep)코드이기에, 이 프로그램을 실행하면 삑하는 소리가 나는데, 놀랄 필요 없습니다.

파일명: Foo.java

public class Foo {
  public static void main(String args[]) {

    for (char c = 0; c <= 255; c++)
      System.out.format("%c = 0x%02X (%3d)%n", c, (int) c, (int) c);

  }
}



어떤 문자의 아스키 코드를 얻기 위해서는, 그 문자를 (int) 로 캐스팅한 후, System.out.format()으로 출력하면 됩니다.



실행 결과:


웹에 표현하기 힘든 특수문자들이 많이 나옵니다. 그래서 다음의 코드표는, 키보드로 입력할 수 있는 문자만 표시했습니다.
0x20 등으로 된 것은 16진수이고, 괄호() 안에 든 숫자는 10진수입니다.
참고로, 0x20 은 공백문자 즉 스페이스(Space)의 아스키 코드입니다.

... 생략

  = 0x20 ( 32)
! = 0x21 ( 33)
" = 0x22 ( 34)
# = 0x23 ( 35)
$ = 0x24 ( 36)
% = 0x25 ( 37)
& = 0x26 ( 38)
' = 0x27 ( 39)
( = 0x28 ( 40)
) = 0x29 ( 41)
* = 0x2A ( 42)
+ = 0x2B ( 43)
, = 0x2C ( 44)
- = 0x2D ( 45)
. = 0x2E ( 46)
/ = 0x2F ( 47)
0 = 0x30 ( 48)
1 = 0x31 ( 49)
2 = 0x32 ( 50)
3 = 0x33 ( 51)
4 = 0x34 ( 52)
5 = 0x35 ( 53)
6 = 0x36 ( 54)
7 = 0x37 ( 55)
8 = 0x38 ( 56)
9 = 0x39 ( 57)
: = 0x3A ( 58)
; = 0x3B ( 59)
< = 0x3C ( 60)
= = 0x3D ( 61)
> = 0x3E ( 62)
? = 0x3F ( 63)
@ = 0x40 ( 64)
A = 0x41 ( 65)
B = 0x42 ( 66)
C = 0x43 ( 67)
D = 0x44 ( 68)
E = 0x45 ( 69)
F = 0x46 ( 70)
G = 0x47 ( 71)
H = 0x48 ( 72)
I = 0x49 ( 73)
J = 0x4A ( 74)
K = 0x4B ( 75)
L = 0x4C ( 76)
M = 0x4D ( 77)
N = 0x4E ( 78)
O = 0x4F ( 79)
P = 0x50 ( 80)
Q = 0x51 ( 81)
R = 0x52 ( 82)
S = 0x53 ( 83)
T = 0x54 ( 84)
U = 0x55 ( 85)
V = 0x56 ( 86)
W = 0x57 ( 87)
X = 0x58 ( 88)
Y = 0x59 ( 89)
Z = 0x5A ( 90)
[ = 0x5B ( 91)
\ = 0x5C ( 92)
] = 0x5D ( 93)
^ = 0x5E ( 94)
_ = 0x5F ( 95)
` = 0x60 ( 96)
a = 0x61 ( 97)
b = 0x62 ( 98)
c = 0x63 ( 99)
d = 0x64 (100)
e = 0x65 (101)
f = 0x66 (102)
g = 0x67 (103)
h = 0x68 (104)
i = 0x69 (105)
j = 0x6A (106)
k = 0x6B (107)
l = 0x6C (108)
m = 0x6D (109)
n = 0x6E (110)
o = 0x6F (111)
p = 0x70 (112)
q = 0x71 (113)
r = 0x72 (114)
s = 0x73 (115)
t = 0x74 (116)
u = 0x75 (117)
v = 0x76 (118)
w = 0x77 (119)
x = 0x78 (120)
y = 0x79 (121)
z = 0x7A (122)
{ = 0x7B (123)
| = 0x7C (124)
} = 0x7D (125)
~ = 0x7E (126)

... 생략





자바는 유니코드가 기본이기에, 실은 위의 코드도 유니코드입니다. 그런데 유니코드의 첫부분은 아스키 코드와 똑같기에, 0xFF (=255) 까지만 출력하면 아스키 코드가 나오는 것입니다.


▶▶ 자바Java] 문자 <―> 아스키코드/유니코드 번호 상호 변환: Char to ASCII-Unicode


아스키 유니코드, 16진법 2진법 10진수 상호 변환기: ▶▶ 16진수 헥사, 2진수, 10진수, 8진법 변환 계산기; Hex Calc


더 읽기:

자바 | Java

posted by mwultong @ 1:11 PM

Java 아스키코드 출력 - java aseukikodeu chullyeog

반응형

컴퓨터를 만지는 사람이라면 한번쯤은 들었을만한 아스키(ASCII) 코드에 대해서 포스팅합니다.
아스키(ASCII) 코드에 대해서 MS 사이트에 아래와 같이 설명되어 있더군요.


컴퓨터의 언어는 숫자입니다. 따라서 프로그램이나 다른 컴퓨터와 통신하려면 컴퓨터에서 문자와 기호가 해당 숫자 표현으로 변환되어야 합니다.


 1960년대에 표준화의 필요성이 대두되면서 ASCII(American Standard Code for Information Interchange)(아스키로 발음)가 개발되었습니다. ASCII 표에는 128개의 숫자가 해당 문자에 할당되어 있습니다. ASCII를 통해 컴퓨터 간에 또는 컴퓨터와 프로그램 간에 데이터를 저장하고 교환할 수 있습니다.


아스키(ASCII) 코드는 언어에 상관없이 모두 사용이 가능합니다. 위의 설명대로 숫자로 이루어져있기 때문에 C, Java, Python, HTML 등등 언어에 상관없이 아스키 코드를 알고 있으면 종종 개발할때 많은 도움이 되기도 합니다.

아스키코드는 128개의 숫자를 사용한다고 하였는데, 개발을 할때 늘 그렇듯이 시작은 항상 0 입니다. 그렇기 때문에 0 ~ 127 까지 사용할수 있다고 보면 됩니다.


물론 확장형 아스키 코드라고해서 128개 이상의 아스키코드를 사용하기도 하는데, 이 확장형 아스키 코드는 OS별로 순서가 다르기때문에 멀티 플랫폼 환경의 프로그램을 개발해야 한다고 하면 지양해야 하기도 합니다.

[아스키 코드표]


Java 아스키코드 출력 - java aseukikodeu chullyeog


[출처 : www.asciicharstable.com]




다음은 아스키 코드를 활용하여 알파벳 A부터 소문자 z까지 콘솔에 출력하는 간단한예제 입니다.

public class StringGlow {

	public static void main(String[] args) {

		
		// 알파벳 시작 문자열 : A
		char aString = 65 ;
		
		
		
		
		while(true){
			
			// 특수문자 시작시 알파벳 소문자로 고정
			if(aString == 91)
				aString = 97 ;

			
			// 아스키 코드를 문자형으로 변환
			String str = String.valueOf(aString) ;
			
			
			System.out.println(str) ;
			
			
			
			// 아스키값 증가
			aString++ ;
			
			
			// 알파벳 소문자 z가 끝날시 종료 처리
			if(aString > 122)
				break ;
			
		}
		

	}

}


1. 대문자 Z, 소문자 a 사이에는 특수문자가 포함되어 있기때문에 아스키 코드가 91일때 97로 강제 고정.
2. 소문자 z(122)보다 크면 while 빠져나옴
3. 아스키코드를 문자형으로 변경하는 것은 String.valueOf 사용



문자들을 순차적(A, B, C, D, ...)으로 부여해야 할때 아스키 코드를 이용하면 편합니다.



반응형

공유하기

게시글 관리

구독하기과일가게 개발자

저작자표시

'Language > Java / JSP' 카테고리의 다른 글

[Java] 파일 복사하기 - FileChannel  (0)2014.09.17[Java] 간단한 숫자체크  (0)2014.09.15[Java] Base64 암호화, 복호화 방법  (2)2014.09.08[Java] 공휴일 체크하기 - 음력, 양력  (1)2014.09.06[JSP] checkbox 값 받기와 전송순서에 대하여  (3)2014.09.04