2009-06-18 5 views
1

유니 코드 파일 읽기에 대한 몇 가지 답변을 읽었으며 대부분의 사람들이 UTF8-CPP 또는 iconv를 가리 킵니다.C++ 파일 읽기 라이브러리 - ANSI 및 유니 코드

내가 찾은 라이브러리 중 ANSI 및 유니 코드 파일 모두에서 작동하지 않는 것이 이상적으로 파일 이름을 전달하는 하나의 함수가 필요하며 파일의 내용을 반환하므로 인코딩이 중요하지 않습니다. 아니면 불가능한가요?

만약 내가 그것에 대해 어떻게 생각하니?

+0

의 성배를 taht를 들어, 내 블로그 게시물을 참조 할 수 있습니다 100 % 보장 된 파일 자동 감지는 불가능합니다. 추측 할 알고리즘이 있지만 100 % 신뢰할 수는 없습니다. –

답변

2

음, 바이너리 읽기가 아닌가? 다른 모든 형식은 해석의 문제이며 정확한 인코딩 등이 중요하게됩니다.

BOM 때문에 어떤 경우에는 유니 코드를 자동 감지 할 수 있지만 항상 존재하는 것은 아니므로 실패한 검색 메커니즘은 깨진 프로그램과 같습니다. 나는 그것이 대부분의 사람들이 그것을 자제하는 이유라고 생각합니다.

+0

아마도 그는 유니 코드 파일 이름을 말하는 것입니다. –

0

UTF8-CPP는 widestring을 사용하는 경우 UTF8 (utf8 :: is_valid 및 utf8 :: find_invalid)을 감지하고 변환 (utf8 :: utf16to8)을 수행 할 수 있습니다. 그것은 위대한 일을합니다, 무엇이 문제입니까? 대부분의 유니 코드 파일은 BOM 시작, 일반적으로

:

0

당신은 기술의 조합을 사용할 수 있습니다. 즉, 파일이 0xfffe 또는 0xfeff으로 시작하는 경우 일 수 있습니다.은 유니 코드라고 가정합니다. 많은 사람들이 UTF-32 AFAIK를 사용하지 않지만 BOM 방법을 사용하여 추측 할 수 있습니다 (위키 페이지 참조).

UTF-8 파일 인 경우 UTF-8을 사용하여 UTF-16 (wstring)으로 변환 할 수 있습니다. UTF-16 파일 인 경우 표준 라이브러리를 사용하여 읽기가 어려울 수 있습니다. 사람이 그것을 사용하는 경우 나도 몰라, 그래서 나는 경험이 없다 - UTF-32의 경우

http://cfc.kizzx2.com/index.php/reading-a-unicode-utf16-file-in-windows-c/

: P

관련 문제