유니 코드 파일 읽기에 대한 몇 가지 답변을 읽었으며 대부분의 사람들이 UTF8-CPP 또는 iconv를 가리 킵니다.C++ 파일 읽기 라이브러리 - ANSI 및 유니 코드
내가 찾은 라이브러리 중 ANSI 및 유니 코드 파일 모두에서 작동하지 않는 것이 이상적으로 파일 이름을 전달하는 하나의 함수가 필요하며 파일의 내용을 반환하므로 인코딩이 중요하지 않습니다. 아니면 불가능한가요?
만약 내가 그것에 대해 어떻게 생각하니?
유니 코드 파일 읽기에 대한 몇 가지 답변을 읽었으며 대부분의 사람들이 UTF8-CPP 또는 iconv를 가리 킵니다.C++ 파일 읽기 라이브러리 - ANSI 및 유니 코드
내가 찾은 라이브러리 중 ANSI 및 유니 코드 파일 모두에서 작동하지 않는 것이 이상적으로 파일 이름을 전달하는 하나의 함수가 필요하며 파일의 내용을 반환하므로 인코딩이 중요하지 않습니다. 아니면 불가능한가요?
만약 내가 그것에 대해 어떻게 생각하니?
음, 바이너리 읽기가 아닌가? 다른 모든 형식은 해석의 문제이며 정확한 인코딩 등이 중요하게됩니다.
BOM 때문에 어떤 경우에는 유니 코드를 자동 감지 할 수 있지만 항상 존재하는 것은 아니므로 실패한 검색 메커니즘은 깨진 프로그램과 같습니다. 나는 그것이 대부분의 사람들이 그것을 자제하는 이유라고 생각합니다.
아마도 그는 유니 코드 파일 이름을 말하는 것입니다. –
UTF8-CPP는 widestring을 사용하는 경우 UTF8 (utf8 :: is_valid 및 utf8 :: find_invalid)을 감지하고 변환 (utf8 :: utf16to8)을 수행 할 수 있습니다. 그것은 위대한 일을합니다, 무엇이 문제입니까? 대부분의 유니 코드 파일은 BOM 시작, 일반적으로
:
당신은 기술의 조합을 사용할 수 있습니다. 즉, 파일이 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
의 성배를 taht를 들어, 내 블로그 게시물을 참조 할 수 있습니다 100 % 보장 된 파일 자동 감지는 불가능합니다. 추측 할 알고리즘이 있지만 100 % 신뢰할 수는 없습니다. –