2009-12-21 8 views
0

VB.Net에서 FileStream Object를 사용하여 텍스트 파일을 읽는 응용 프로그램을 개발 중입니다. StreamReader을 사용하지 않습니다. 버퍼링으로 인해 Seek을 사용할 수 없으므로 사용하지 마십시오.고정 크기 문자 인코딩

이러한 텍스트 파일은 인덱스 파일과 데이터 파일을 모두 포함하는 데이터베이스를 구성합니다. 색인 파일에서 모든 필드는 고정 길이이며 데이터 파일에는 해당되지 않습니다.

최근에 문제가 발생했습니다. 일부 파일에는 악센트가 있기 때문에 해당 문자는 1 바이트 이상을 차지합니다. 따라서 색인 파일을 검색 할 때 오프셋이 표시되면 나머지 색인 파일은 올바른 방법으로 읽히지 않습니다.

나는 모든 문자가 같은 바이트 수를 사용하여 저장되는 액센트, 특수 문자 등을 사용할 수있는 인코딩을 찾고 있습니다. 이 방법,; 나는 여전히 내 파일을 찾을 수있다. 이것이 존재합니까?

감사합니다.

CFP.

답변

-1

나는 UTF-16이 모든 악센트를 가지며 각각의 문자가 같은 바이트 수라고 믿습니다.

이 언어가 특정 언어 인 경우 해당 언어의 encoding을 사용할 수 있습니다.

+2

마이너 문제 : 코드 범위 010000 위의 문자는 4 바이트 길이, 그리고 2 주요 문제가 될 것입니다 : 분해 형태는 예를 들어 (2 개 결합 문자를 취할 것입니다 (U + 00E9는 급성 라틴 소문자 E) 될 수 있습니다 (U + 0065, 라틴 소문자 E 및 U + 0301, 급사 동의와 함께)로 대체됩니다. – Jerome

1

UTF-32는 고정 길이로 제공되는 유일한 (비 손실) 인코딩입니다. 이것은 많은 오버 헤드를 유발합니다.

내가 이해할 수없는 것은 인덱스 파일에 고정 길이 필드가 포함되어 있다는 것입니다. 즉, 문제가 없어야합니다. 이 특정 고정 길이를 사용하여 색인 파일을 탐색 할 수 있습니다. 그런 다음 인덱스 파일에서 주어진 주소를 사용하여 데이터 파일을 찾습니다. 당신은 항상 텍스트의 시작 부분에서 끝납니다. 내가 뭘 놓치고 있니?

+0

사실, 문자 수 측면에서 고정 길이를 의미했습니다. 모바일 장치에서는 utf32가 지원되지 않을까 걱정됩니다. 유니 코드는 훌륭하게 작동합니다. –