이것은 아마도 미세 최적화 일지 모르지만 주어진 바이트 스트림이 통과 할 때 유효한 UTF-8인지 확인하고 싶습니다. 내 응용 프로그램이지만, 결과 디코딩 된 코드 포인트를 유지하고 싶지는 않습니다. 다시 말하면, 내가 large_string.decode('utf-8')
으로 전화를 걸면 인코딩이 성공했다고 가정하고 디코딩에 의해 반환 된 유니 코드 문자열을 유지하고 싶지 않으며 메모리를 낭비하지 않기를 원합니다.바이트 스트림이 유효하지 않은 경우 UTF-8 (또는 다른 인코딩)없이 복사
한 번에 몇 바이트를 읽은 다음 decode()
을 시도한 다음 decode()
이 성공할 때까지 더 많은 바이트를 추가합니다 (또는 한 문자의 최대 바이트 수를 초과했습니다. 인코딩). 그러나 ISTM은 기존의 디코더를 단순히 디코딩 된 유니 코드 문자를 버리고 내 자신을 굴릴 필요가없는 방식으로 사용할 수 있어야합니다. 하지만 즉시 stdlib 문서를 수색하는 것에 신경 쓰지는 않습니다.
utf8_decoder = codecs.getincrementaldecoder('utf8')()
이것은 IncrementalDecoder()
instance입니다 :
유효한 멀티 바이트 trf8 인코딩 된 문자를 한 쌍으로 나누지 않는 방식으로 긴 문자열/스트림을 "청크"로 나눌 수 있습니까? – martineau