2012-06-09 2 views
0

최근에는 중국어, 영어, 심지어 일부 이모티콘을 포함한 여러 언어로 된 텍스트를 다루었습니다.단어가 반자체인지 아니면 전체체인지 구분하는 방법은 무엇입니까?

나는이 문제를 상당히 많이 조사해 왔지만, 내가 찾을 수있는 유일한 것은 문자가 절반인지 여부를 결정하는 방법을 말하는 것이 아니라 "반자 문자로 반자 문자를 대체하는 것"입니다 - 또는 전폭 단어.

는 그래서, 내 질문은 :

이 단어는 반각 또는 전체 폭인지 여부를 알 수 있습니까?

+0

일반적으로 텍스트를 검사하려면 NFKD와 같은 호환 분해 양식을 사용합니다. 이렇게하면 전폭 라틴 문자가 일반 (반가움)이되고, 가나/한글이 보통 (전각)이되어 텍스트를 더 쉽게 분석 할 수 있습니다. 파이썬에서는'import unicodedata; unicodedata.normalize ('NKFD', text)'. –

+0

정보를 제공해 주셔서 감사합니다! – amigcamel

+0

NKFD가 아닌 NFKD입니다. –

답변

2

유니 코드 6.1에는 블록 Halfwidth and Fullwidth forms, pdf here이 있습니다.

\uFF01-\uFF60\uFFE0-\uFFE6은 전체 너비이고 \uFF61-\uFFDC\uFFE8-\uFFEE은 절반입니다.

+0

\ u00F01- \ uFF60이 잘못되었으므로 \ uFF01- \ uFF60이어야합니다. – Lelouchcr

+0

@Lelouchcr Fixed! 대답 3 년 후 정정 주셔서 감사합니다! – beerbajay

+0

이것은 완전한 대답은 아닙니다. Halfwidth 및 Fullwidth 형식 이외의 문자는 반자 또는 전각이 될 수 있으므로이 블록 차트 만 참조로 사용하면 대다수의 유니 코드가 정의되지 않습니다. –

0

단어의 폭이 전폭 인 단어는 전폭입니다. 유니 코드 사양을 조회하고 어떤 문자 범위가 전체 너비인지 확인한 다음 각 문자를 확인해야합니다.

1

반 폭 문자가 무엇인지, 전체 너비 문자가 무엇인지 명확한 기준이 없으면 대답하기 어려운 질문입니다. 결정할 수 있다면, 유니 코드 (또는 어떤 인코딩 스키마)의 특정 범위에 대해 단어의 문자를 테스트합니다.

유니 코드 블록 Halfwidth and Fullwidth Forms은 어떤 문자에 대체 양식이 있는지 보여줍니다. 이 블록에없는 기능의 경우 절반 너비와 전체 너비를 고려해야합니다.

대부분의 서양 문자는 반자이고 대부분의 동부 문자는 전체 너비이지만 두 가지 모두에 예외가있을 것이라고 생각합니다. this Unicode report이 강조 표시되기 때문에 모호한 점도 있습니다.

This proposal에는 문자를 전체 절반 및 모호한 너비로 나누는 것으로 보이는 code이 포함됩니다. 이러한 코드 포인트를 시작 위치로 사용할 수 있습니다.

관련 문제