티스토리 뷰

반응형

아.. 노가다해서 한글쓰는걸 만들어 놧더니 다 만들고 나니까 엄청나게 쉬운 방법을 찾아냇습니다.
이전에 만든 함수로는 한글 영어 특문 + 숫자 만 적을 수 있지만 이번 방법으로는 세계 모든언어를 표현할 수 있고 이것들 타이핑 하는 함수의 소스코드는 20줄밖에 안됩니다..

방법은 [Alt + 숫자패드]를 누르는 방법입니다. Alt버튼을 누른상태에서 오른쪽 키패드로 유니코드의 10진코드값을 적으면 그대로 적힙니다..

예를 들어 '가'의 16진코드값은 0xAC00 인데, 이것을 10진코드로 바꾸면 44,032이 나옵니다.
Alt를 누른상태에서 키패트 44032를 치고 알트를 때면 '가'가 입력이 됩니다..


아.. 다 하고 나니까 발견하네.. 이 방법이 백배 좋은거 같습니다...




// 2011-08-21 7:50 추가.
문제가 발생했습니다.. 유니코드 코드값으로 썻는데 특정페이지에서만 작동하고 대부분의 페이지에서는 찾을수 없다는 '?' 라는 문자가 출력되더군요..
알아보니 유니코드 코드값과 멀티바이트 코드 값이 다른데, 멀티바이트 코드값으로 하니 대부분 잘 출력이 되더군요..

근데 문제가 발생한게 한글을 표현하려면 한글자에 2바이트의 공간이 필요합니다. 하지만 유니코드 자료형이 아닌 단순 char형으로 선언을 하면 한글자에 2개의 공간이 필요하게 되죠.
멀티바이트 '가'의 코드값은 0xB0A1인데, 저 코드값이 char형 변수에 어떻게 저장되는지 알아보니 다음과 같이 저장이 되더군요.

Arr[0] = 0xffffffB0
Arr[1] = 0xffffffA1

따라서 이 코드를 0xB0A1로 변환할 필요가 있었습니다.
다음과 같은 방법으로 결과를 얻어 냇습니다.
(((~Arr[0])^0xff)<<8)+((~Arr[1])^0xff)

이것을 이용한 소스코드.


코드보면 2바이트짜리 문자에대한 처리만 있는데 1바이트짜리 문자 처리도 넣어야 정상작동한다!
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함