2013-10-22 2 views
0

파이썬에서 유니 코드로 cp850을 매핑 할 수 있습니까? 당신은 질문 할 수 있습니다, 왜 내가하고 싶지 : 나는 cp850을 사용하여 텍스트 파일을 가지고 있고 그것을 밖으로 데이터베이스를 만들어야합니다. 따라서 텍스트 형식으로 사용되는 일부 문자가 사용됩니다. 예를 들어 █ (CP850 : 0xDB)은 줄 바꿈으로 사용됩니다. 그래서 나는 더 나은 사람이 읽을 수 있도록 UTF-8로 파일을 변환했습니다. 다음 단계는 데이터베이스를 채우고 특수 문자를 적절한 제어 문자 (\ n, \ t, ...)로 변경하는 것입니다. 그러나 변환 프로세스 (물론)는 0xDB에서 0x2588 로의 줄 바꿈과 같이 숫자 표현을 변경합니다. 이 문제를 해결할 수있는 해결책이 있습니까? 아니면 코드를 직접 매핑해야합니까?파이썬에서 유니 코드로 cp850 매핑

감사

+0

파일을 UTF-8로 변환했기 때문에 'u'\ u2588 '문자의 CP850 표현이 필요한 이유는 무엇입니까? –

답변

2

는 파이썬에서 유니 코드로 CP850을 매핑 할 수 있습니까?

물론, 단지 데이터의 바이트 (파이썬 3 예) 디코딩 :

>>> s=b'\xcdABCDEF\xcd\xdbHIJKLMNOP'.decode('cp850') 
>>> s 
'═ABCDEF═█HIJKLMNOP' 

내가 코드 나 자신을지도해야합니까?

번역해야하는 바이트 수.

>>> s.translate(D).encode('utf8') 
b'\xe2\x95\x90ABCDEF\xe2\x95\x90\nHIJKLMNOP' 

중요한 점은이다 :

이 완료
>>> D={} 
>>> D['\u2588'] = '\n' # Make translation entry in dictionary 
>>> s.translate(D) 
'═ABCDEF═\nHIJKLMNOP' 

, UTF-8의 출력을 인코딩 : 매핑의 사전을 취 유니 코드 문자열을위한 편리한 .translate 방법이있다 데이터를 읽을 때 유니 코드로 디코드하고 유니 코드로 모든 처리를 수행 한 다음 저장소로 데이터를 보낼 때 다시 데이터로 인코딩합니다. 예를 들어, 다음 파일로 :

+0

대단히 고마워요! – MS1

관련 문제