2014-09-30 4 views
-1

저는 base64로 인코딩 된 문자열 S = "aGVsbG8 ="을 가지고 있습니다. 이제 ASCII, UTF-8, UTF-16, UTF-32, CP-1256, ISO- 8659-1, ISO-8659-2, ISO-8659-6, ISO-8659-15 및 Windows-1252, 어떻게 문자열을 언급 된 형식으로 디코딩 할 수 있습니까? UTF-16의 경우 다음 코드를 시도했지만 "bytes"객체에 오류가 발생했습니다. 'deocde'속성이 없습니다. " base64.b64decode (encodedBase64String) .deocde ('utf-8')인코딩 된 base64 문자열의 디코딩

+0

오류는 'deocde'가 존재하지 않는다는 힌트를 제공합니다. 'deocde'는'decode' 여야합니다. – fredtantini

+0

게다가, UTF-16이 주어지지 않을 것입니다. –

+0

backticks 사이에 오류를 넣고 {} 버튼을 사용하여 코드를 코드로 표시하여 질문을 더 읽기 쉽게 만들어주십시오. 또한 맞춤법 오류를 수정하십시오. –

답변

0

3.x base64 모듈의 doc 또는 docstring을 읽으십시오. 이 모듈은 텍스트가 아닌 바이트로 작동합니다. 따라서 base64로 인코딩 된 'string'은 바이트 문자열 B = b"aGVsbG8"이됩니다. base64.decodebytes(B)의 결과는 바이트입니다. 텍스트 또는 이미지 또는 다른 인코딩이있는 이진 데이터. 이 경우 ASCII 형식의 텍스트로 볼 수있는 b'hello'입니다. 다른 인코딩으로 변경하려면 먼저 텍스트를 유니 코드로 디코딩 한 다음 원하는 다른 인코딩으로 바이트로 인코딩하십시오. 위에 나열한 대부분의 인코딩에는 같은 바이트가 사용됩니다.

>>> B=b"aGVsbG8=" 
>>> b = base64.decodebytes(B) 
>>> b 
b'hello' 
>>> t = b.decode() 
>>> t 
'hello' 
>>> t.encode('utf-8') 
b'hello' 
>>> t.encode('utf-16') 
b'\xff\xfeh\x00e\x00l\x00l\x00o\x00' 
>>> t.encode('utf-32') 
b'\xff\xfe\x00\x00h\x00\x00\x00e\x00\x00\x00l\x00\x00\x00l\x00\x00\x00o\x00\x00\x00'