개발을 하면서 소프트웨어 버전과 같은 특수한 목적으로 Ascii Code 를 많이들 사용하곤 합니다. 오늘은 Powershell 을 이용하여 Ascii Code 를 알아내는 방법에 대해서 소개하려 합니다

Powershell 에서 문자열을 char 배열로 바꾸기 위해서 ToCharArray() 멤버 함수를 사용합니다. 전체 코드는 아래와 같고~





위 코드에서 {0:X2} 부분은 두 자리 헥사값을 얻기 위한 과정이고~ [byte][char] 는 Ascii Code 를 얻기 위한 과정입니다.

세 번째 줄은 해도 되고 안 되지만 얻어진 헥사값의 순서를 뒤집기 위한 과정입니다.

다른 스크립트 언어도 그렇지만 Windows 환경에서 Powershell 은 정말 다양한 기능이 있는 것 같고~ Powershell 을 사용하느냐 하지 않느냐에 따라서 생산성이 극단적으로 갈리게 되는 거 같습니다. 많은 분들이 Powershell 을 업무에 적극적으로 활용해 보셨으면 합니다.



Powershell 에서 다음과 같이 char에 대한 ascii 값을 확인 할 수 있습니다.


PS C:\Users\kdjang> [byte][char]'a'

97


PS C:\Users\kdjang> [byte][char]'z'

122


PS C:\Users\kdjang> [byte][char]'A'

65


PS C:\Users\kdjang> [byte][char]'Z'

90


위 값을 사용하면


a~z, A~Z 에 대란 리스트를 간단하게 만들 수 있겠죠~


$UpperAlph=@()

65..90|foreach-object{$UpperAlph+=[char]$_}

$UpperAlph



$LowerAlph=@()

97..122|foreach-object{$LowerAlph+=[char]$_}

$LowerAlph






텍스트 파일을 사용하다 보면 encoding 이 문제가 되는 경우가 종종 있습니다.

 

이런 경우에는 encoding 을 변경하여 해결 하곤 하는데~

 

notepad++ 와 같은 에디터의 기능을 활용 하거나~ 아니면 iconv 와 같은 명령어를 사용하여 encoding 을 변경하곤 하는데요~

 

iconv 와 같은 명령어를 활용하더라도 현재 텍스트 파일의 encoding 방식을 확인 해야 합니다.

 

encoding을 확인 하기 위해 일일이 에디터에서 파일을 여는 것도 귀찮아서 찾아보니~

 

chardet 라는 python 모듈을 있더군요.

 

https://github.com/chardet/chardet

 

위 주소에서 확인 할 수 있는 바와 같이 아래 타입들을 detect 할 수 있다고 합니다.

 

ASCII, UTF-8, UTF-16 (2 variants), UTF-32 (4 variants), Big5, GB2312, EUC-TW, HZ-GB-2312, ISO-2022-CN (Traditional and Simplified Chinese), EUC-JP, SHIFT_JIS, CP932, ISO-2022-JP (Japanese), EUC-KR, ISO-2022-KR (Korean), KOI8-R, MacCyrillic, IBM855, IBM866, ISO-8859-5, windows-1251 (Cyrillic), ISO-8859-5, windows-1251 (Bulgarian), windows-1252 (English), ISO-8859-7, windows-1253 (Greek), ISO-8859-8, windows-1255 (Visual and Logical Hebrew), TIS-620 (Thai)

 

python 모듈이니만큼 설치도 굉장히 간단한데요~

 

다음과 같이 pip 로 설치 할 수 있습니다.

 

pip install chardet

 

설치는 하면 아래 그림과 같이 C:\Python27\Scripts\chardetect.EXE 에 chardetect 실행 파일이 설치가 됩니다.

 

그럼 다음과 같이 명령어를 이용하여 텍스트 파일의 encoding 을 확인 할 수 있습니다.

 

chardetect 파일명1 파일명2 파일명3 …

 


+ Recent posts