2010-08-12 3 views
0

"발음 구분 기호를 결합 형식으로 강제하여이 문자열 정규화"라고 말하고 싶습니다.분음 부호가 앞에오고 형식을 결합하지 않을 때 코드 페이지를 유니 코드 C로 정규화하는 방법

세부 사항 :
내 코드가 C#에서 개발되고 있지만 특정 언어로 문제가 있다고 생각하지 않습니다.

내 데이터에는 두 가지 문제가 있습니다. (1) 분음 기호가이 데이터의 기본 문자 앞에 있습니다 (유니 코드 형식 D 또는 KD의 기본 문자를 따라야 함). (2) 내 데이터의 악센트 분음 기호는 그리스 토 노스 (U + 0384)이지만 정규화하기 위해 양식 (U + 0301)을 결합해야합니다.

나는 프로그래밍 방식으로 이것을하고 싶다. 이러한 유형의 작업은 잘 알려져 있지만 C# Globalization 메서드 (정규화 메서드가 있지만 해당 조합 형식에 분음 부호 강세를 적용 할 수있는 방법이 없음)에서 지원을 찾지 못했다고 생각합니다.

답변

1

저는 C# 세계화 방법이 여기 당신을 도울 수 있다고 생각하지 않습니다. 당신이 지적한대로 U + 0384는 결합 문자가 아닙니다. 그것은 문자 그 자체입니다. 이것은 또한 상용 성 분해 (U + 0020 U + 0301로)에서 볼 수있다. 데이터 세트는 다음 문자에 분음 기호로 tonos를 표시하는 소스에서 제공 될 가능성이 큽니다. 이는 유니 코드 사양에 따라 "적절하지"않습니다. 따라서 직접 데이터를 변환해야합니다. 나는 아포스트로피 (apostrophe)와 비슷한 문제를 겪었다. 응용 프로그램에서 올바른 인용 부호를 사용하는 경우가 있습니다.

데이터 변환이 어렵지 않으므로 코드를 작성할 수 있습니다. 스테이트 풀 변환기가 있고 데이터를 스트리밍합니다. U + 0384가 감지되면 emmetied되지 않습니다. 당신은 "tonos"상태를 취하고 NEXT 문자 다음에 U + 0301을 내 보냅니다. 처리 할 오류 조건입니다 (U + 0384가 실행되고 "tonos"상태의 데이터 끝). 이 데이터는 일반적인 API로 정규화 될 수 있습니다. 행운을 비네.