유니 코드 이름을 가진 파일이 있습니다 'קובץ.txt'
. 나는 그를 포장하고 python의 zipfile을 사용하고 있습니다.
Windows 7 파일 탐색기를 사용하여 파일을 볼 때 파일 이름이 엉망이라는 점을 제외하고는 파일을 압축하고 나중에 열 수 있습니다 (7zip은 훌륭하게 작동합니다).
문서에 따르면 이것은 일반적인 문제이며이를 처리하는 방법에 대한 지침이 있습니다.
ZipFile.write에서
노트
ZIP 파일에 대한 공식 파일 이름 인코딩은 없습니다. 유니 코드 파일 이름이있는 경우 write ()에 전달하기 전에 원하는 인코딩의 바이트 문자열로 변환해야합니다 . WinZip은 모든 파일 이름을 DOS Latin이라고도하는 CP437로 인코딩 된 것으로 해석합니다.
죄송합니다. 파일 이름으로 정확히 무엇을해야하는지 알 수 없습니다. 나는 시도했다 .encode('CP437')
, .decode('CP437')
..
유니 코드 문자열을 CP437로 인코딩해야합니다. 그러나 CP437 코덱은 히브리어를 지원하지 않기 때문에 특정 예제를 인코딩 할 수 없습니다.
>>> u'קובץ.txt'.encode('cp437')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/mjpieters/Development/venvs/stackoverflow-2.7/lib/python2.7/encodings/cp437.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-3: character maps to <undefined>
위의 오류는 קובץ
대상 문자 집합에 해당 문자가 없기 때문에 처음 4 자 ( )를 인코딩 할 수 없음을 나타냅니다. CP437은 주로 수학 방정식 (예 : Σ 및 φ)에 대한 서양 알파벳 (AZ 및 ç 및 é와 같은 악센트 부호 문자), IBM 선 그리기 문자 (예 : ╚ 및 ┤) 및 몇 가지 그리스 기호 만 지원합니다.
CP437 코덱에서 지원하는 문자 만 사용하는 다른 파일 이름을 생성 하거나 WinZip이 히브리어 파일 이름을 제대로 표시 할 수 없다는 사실을 알고 살아야하며 7zip과 함께 작동했던 문자 세트를 고수해야합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다