지식잡식
Show
IT 실무/웹프로그래밍 by 지식id 2018. 2. 3. 반응형 웹상에서 간단한 변환기는 많이 돌아다니는데 옵션은 많고 칸은 좁고 불편하게 돼 있어서 다시 편하게 만들어 보았습니다. 유니코드나 한글을 입력 하시면 자동으로 상호 변환됩니다. 유니코드
란 한글 란 복사가 안된다고 문의하시는 분들이 많습니다. 복사가 안되는데 복사가 필요하신 분은 아래 링크 이용해주시면 감사하겠습니다. Unicode 인코드/디코드 도구 URL 인코드/디코드 도구 반응형 저작자표시 비영리 변경금지 'IT 실무 > 웹프로그래밍' 카테고리의 다른 글
태그디코딩, 변환, 유니코드, 인코딩, 한글 관련글
댓글18비밀글 현행 한글의 표준은 완성형이지만, 과거에는 조합형과 완성형이 서로 표준자리를 놓고 다투었기에 Unicode에는 조합형의 흔적도 있어요. 물론 지금은 일부 레거시 시스템이나 임베디드 프로그래밍이 아니면 거의 사용할 곳이 없기는 하지만, 그렇다고 해도 조합형 또한 사용할 수 있도록 표준이 제정되있기는 하더라구요. 한글 완성형은 말 그대로 모든 글자가 각각 하나의 코드로 정의되어 있어서 해당하는 글자를 치면 자동적으로 해당하는 입력이 들어가는 것을 말하구요. 조합형이 무엇인가에 대해서는 한글 유니코드표는 16진수를 사용하고 있으며, 많은 사이트나 브라우저에서는 자동적으로 완성형으로 변환해서 표현해주기도 하며, 일부 임베비드 시스템에서는 용량이나 처리 문제로 인해 조합형을 사용해야 할 때도 있지요 ㅎㅎ 그 표는 이런 형상을 띄구요. Number는 순서를, character reference는 해당 기호를 나타내는 기본값을 말해요. 이를 이용해서 관련 변환 코드를 짜 보기도 했는데요. 이 코드를 이용하면, 단어를 해당하는 조합형 문자열로 쉽게 바꿔서 이용하실 수 있어요 ㅎㅎ # -*- coding: utf-8 -*- import re # 유니코드 한글 시작 : 44032, 끝 : 55199 BASE_CODE, CHOSUNG, JUNGSUNG = 44032, 588, 28 CHAR_List = [] count = 1; # 초성 리스트. 00 ~ 18 CHOSUNG_LIST = ['ㄱ', 'ㄲ', 'ㄴ', 'ㄷ', 'ㄸ', 'ㄹ', 'ㅁ', 'ㅂ', 'ㅃ', 'ㅅ', 'ㅆ', 'ㅇ', 'ㅈ', 'ㅉ', 'ㅊ', 'ㅋ', 'ㅌ', 'ㅍ', 'ㅎ'] # 중성 리스트. 00 ~ 20 JUNGSUNG_LIST = ['ㅏ', 'ㅐ', 'ㅑ', 'ㅒ', 'ㅓ', 'ㅔ', 'ㅕ', 'ㅖ', 'ㅗ', 'ㅘ', 'ㅙ', 'ㅚ', 'ㅛ', 'ㅜ', 'ㅝ', 'ㅞ', 'ㅟ', 'ㅠ', 'ㅡ', 'ㅢ', 'ㅣ'] # 종성 리스트. 00 ~ 27 + 1(1개 없음) JONGSUNG_LIST = [' ', 'ㄱ', 'ㄲ', 'ㄳ', 'ㄴ', 'ㄵ', 'ㄶ', 'ㄷ', 'ㄹ', 'ㄺ', 'ㄻ', 'ㄼ', 'ㄽ', 'ㄾ', 'ㄿ', 'ㅀ', 'ㅁ', 'ㅂ', 'ㅄ', 'ㅅ', 'ㅆ', 'ㅇ', 'ㅈ', 'ㅊ', 'ㅋ', 'ㅌ', 'ㅍ', 'ㅎ'] if __name__ == '__main__': test_keyword = input("문자를 입력하세요: ") split_keyword_list = list(test_keyword) print(split_keyword_list) result = list() for keyword in split_keyword_list: #초성 중성 종성 넘버링 BASE_CHO_NUMBER = 4352 BASE_JUNG_NUMBER = 4449 BASE_JONG_NUMBER = 4519 # 한글 여부 check 후 분리 if re.match('.*[ㄱ-ㅎㅏ-ㅣ가-힣]+.*', keyword) is not None: char_code = ord(keyword) - BASE_CODE char1 = int(char_code / CHOSUNG) result.append(CHOSUNG_LIST[char1]) BASE_CHO_NUMBER = BASE_CHO_NUMBER + char1 CHAR_List.insert(count, "&#x"+hex(BASE_CHO_NUMBER)[2:]) count = count +1; print('초성 : {}'.format(CHOSUNG_LIST[char1])) char2 = int((char_code - (CHOSUNG * char1)) / JUNGSUNG) result.append(JUNGSUNG_LIST[char2]) BASE_JUNG_NUMBER = BASE_JUNG_NUMBER + char2 CHAR_List.insert(count, "&#x"+hex(BASE_JUNG_NUMBER)[2:]) count = count +1; print('중성 : {}'.format(JUNGSUNG_LIST[char2])) char3 = int((char_code - (CHOSUNG * char1) - (JUNGSUNG * char2))) result.append(JONGSUNG_LIST[char3]) BASE_JONG_NUMBER = BASE_JONG_NUMBER + char3 if char3 is 0: BASE_JONG_NUMBER = 0000 CHAR_List.insert(count, "&#x"+hex(BASE_JONG_NUMBER)[2:]) count = count +1; print('종성 : {}'.format(JONGSUNG_LIST[char3])) else: result.append(keyword) # result print("Unicode 단어 -> Unicode 조합형 문자열로 변환한 결과") print(CHAR_List) print("".join(result)) exit = input("")#바로 안꺼지고 종료 시 입력을 받도록 위의 코드를 이용하여 돌리면 이런 식으로 결과가 나옵니다. [�]은 값이 없는 것이구요. 과거 1990년대에는 조합형과 완성형이 한글 표준자리를 놓고 경쟁하기도 하였는데요. 관련해서는 를 참고해 보시는 게 좋을 듯 싶네요. |