여기에 두 가지 질문이 있습니다. 일반적으로 BOM이있는 UTF-8 파일 세트가 있습니다. BOM이없는 UTF-8로 (이상적으로는) 변환하고 싶습니다. codecs.StreamRecoder(stream, encode, decode, Reader, Writer, errors)
이것을 처리 할 것 같습니다 . 그러나 나는 사용에 대한 좋은 예를 실제로 보지 못합니다. 이것이이를 처리하는 가장 좋은 방법일까요?
source files:
Tue Jan 17$ file brh-m-157.json
brh-m-157.json: UTF-8 Unicode (with BOM) text
또한 명시 적으로 알지 못해도 다른 입력 인코딩을 처리 할 수 있다면 이상적 일 것입니다 (ASCII 및 UTF-16). 이 모든 것이 가능할 것 같습니다. 알려진 Python 인코딩을 취하고 BOM없이 UTF-8로 출력 할 수있는 솔루션이 있습니까?
아래에서 제안 된 sol'n 1 개 수정 (감사합니다!)
fp = open('brh-m-157.json','rw')
s = fp.read()
u = s.decode('utf-8-sig')
s = u.encode('utf-8')
print fp.encoding
fp.write(s)
이로 인해 다음과 같은 오류가 발생합니다.
IOError: [Errno 9] Bad file descriptor
속보
댓글에서 실수는 'r +'/ 'r + b'대신 'rw'모드로 파일을 여는 것이므로 결국 내 질문을 다시 편집하고 해결 된 부분을 제거해야합니다.
r+
모드 를 사용하려면 파일을 열어야합니다 .b
재미있는 라인 엔딩 비즈니스 없이도 Windows에서도 작동하도록 추가하십시오 . 마지막으로 파일의 시작 부분으로 돌아가서 끝 부분을 자르고 싶을 것입니다. 업데이트 된 답변을 참조하십시오.