문제

MS-Excel 및 MS-Access에서 한국어에서 초기 문자를 추출해야합니다. 왼쪽 ( "left", 1)을 사용하면 첫 번째 음절을 반환합니다. 즉, 내가 필요한 것은 초기 문자 IE ㅎ입니다. 이 작업을 수행하는 기능이 있습니까? 아니면 적어도 관용구?

문자열에서 유니 코드 값을 얻는 방법을 알고 있다면 거기에서 해결할 수 있지만 휠을 재창조 할 것이라고 확신합니다. (다시 한번)

도움이 되었습니까?

해결책

바이트 abyte = "한글"로서 당신이 찾고있는 것은 바이트 배열 Dim Abyte ()가 문자열의 각 문자에 대한 두 개의 유니 코드 값을 제공해야한다고 생각합니다.

다른 팁

면책 조항 : 액세스 또는 VBA에 대해서는 거의 알지 못하지만 일반적인 유니 코드 문제이므로 해당 도구에만 국한되지 않습니다. 이 문제와 관련된 태그를 추가하기 위해 질문을 다시 시작했습니다.

액세스는 한를 반환하여 올바른 일을하고 있습니다. 여기서 원하는 것은 표준 분해 "분해"에 대한 정규화 양식 D (NFD)로도 알려진 구성 요소 Jamos 의이 교체의. NFD 양식은 d ‌ ‌ ᅡ ᆫ ᆫ이며, 첫 번째 문자는 원하는 것입니다.

또한 예시에 따라 Jamo (ᄒ)의 동등한 Hangul (ㅎ)을 반환하는 함수를 원한다는 점에 유의하십시오. 다른 시맨틱 단위 (본격적인 Hangul syllabable, 전체적으로 두 가지 코드 포인트가 있습니다. 또는 교울의 일부). 전자에서 후자로 사전 정의 된 매핑은 없으며, Jamos의 수가 수십 개로 제한되므로 그 효과에 작은 기능을 작성할 수 있습니다 (실제 작업은 첫 번째 기능 NFD).

Arthur의 훌륭한 대답에 추가하면 Hangeul 음절에서 Jamo를 추출하는 것이 표준에서 매우 간단하다는 것을 지적하고 싶습니다. 솔루션은 Excel 또는 Access (Python 모듈)에만 국한되지 않지만 산술 표현 만 포함되므로 다른 언어로 쉽게 번역해야합니다. 알 수 있듯이 공식은 109 페이지의 공식과 동일합니다. 기준. 분해는 튜플로 반환됩니다 정수 인코딩 된 문자열. 행울 자모 코드 차트.

# -*- encoding: utf-8 -*-

SBase = 0xAC00
LBase = 0x1100
VBase = 0x1161
TBase = 0x11A7
SCount = 11172
LCount = 19
VCount = 21
TCount = 28
NCount = VCount * TCount


def decompose(syllable):
    global SBase, LBase, VBase, TBase, SCount, LCount, VCount, TCount, NCount

    S = ord(syllable)
    SIndex = S - SBase
    L = LBase + SIndex / NCount
    V = VBase + (SIndex % NCount) / TCount
    T = TBase + SIndex % TCount

    if T == TBase:
        result = (L,V)
    else:
        result = (L,V,T)

    return tuple(map(unichr, result))

if __name__ == '__main__':
    test_values = u'항가있닭넓짧'

    for syllable in test_values:
        print syllable, ':',
        for s in decompose(syllable): print s,
        print

이것은 내 콘솔의 출력입니다.

항 : ᄒ ᅡ ᆼ
가 : ᄀ ᅡ
있 : ᄋ ᅵ ᆻ
닭 : ᄃ ᅡ ᆰ
넓 : ᄂ ᅥ ᆲ
짧 : ᄍ ᅡ ᆲ

나는 당신이 필요한 것을 가지고 있다고 가정하지만 다소 복잡해 보입니다. 나는 이것에 대해 아무것도 모르지만 최근에 유니 코드 처리에 대한 조사를 수행했으며 왼쪽B (), rightb (), inputb (), instrb (), lenb (), ASCB와 같은 모든 문자열 바이트 함수를 조사했습니다. (), chrb () 및 midb () 및 vbunicode 인수가있는 strconv ()도 있습니다. 이것들은 모든 이중 바이트 컨텍스트에서 사용될 것이라고 생각하는 모든 기능이지만, 그 환경에서는 작동하지 않으므로 매우 중요한 것을 놓치게 될 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top