2011-07-16 4 views
2
source = '\xe3\xc7\x9f' 
destination = u'\u0645\u0627\u06ba' 

어떻게 소스에서 대상으로 이동합니까?파이썬 문자열 변환 (현지화) 질문

(소스 및 목적지가 동일한 순서로, 막 다르게 표현 모두 같은 3 자이다.)

기술적 소스 우르두어이고 목적지가 동일한 3 유니 코드 코드 포인트 인 문자. 참조 : https://www.codeaurora.org/git/projects/froyo-gb-dsds-7227/repository/revisions/39141d7a9dbdd2e9acf006430a7e7557ffd1efce/entry/external/icu4c/data/mappings/ibm-5352_P100-1998.ucm

을 내가 할 경우

source.decode('cp1006') 

를 내가 얻을 : 나는 내가 할 경우에 대한 ...

찾고 있어요되지 않은 것을 어느

u'\ufed9\ufb84\x9f' 

:

source.decode('raw_unicode_escape') 

다음과 같이 표시됩니다.

u'\xe3\xc7\x9f' 

나는 점 A에서 파이썬 B를 (대상)을 가리 키도록 (소스)를 얻는 방법에 대한 ...

찾고 있어요 무엇도 아니다 무엇입니까?

답변

6
In [129]: source = '\xe3\xc7\x9f' 
In [130]: source.decode('cp1256') 
Out[130]: u'\u0645\u0627\u06ba' 

In [131]: destination 
Out[131]: u'\u0645\u0627\u06ba' 

PS. 질문 : "이 str 개체를 유니 코드 개체로 변환하는 코덱은 무엇입니까?"은 수시로 제공됩니다. 여기에 신속하게 이러한 질문에 대한 답변을 도울 수있는 작은 스크립트입니다 (단순히 모든 가능한 인코딩으로 str 개체를 해독하려고) :

guess_encoding.py :

import binascii 
import zlib 
import codecs 
import pkgutil 
import os 
import encodings 

def all_encodings(): 
    modnames=set([modname for importer, modname, ispkg in pkgutil.walk_packages(
     path=[os.path.dirname(encodings.__file__)], prefix='')]) 
    aliases=set(encodings.aliases.aliases.values()) 
    return modnames.union(aliases)   

def main(): 
    encodings=all_encodings() 
    while 1: 
     text=raw_input() 
     text=codecs.escape_decode(text)[0] 
     # print('Attempting to decode {0!r}'.format(text)) 
     for enc in encodings: 
      try: 
       msg=text.decode(enc) 
      except (IOError,UnicodeDecodeError,LookupError, 
        TypeError,ValueError,binascii.Error,zlib.error) as err: 
       pass 
       # print('{e} failed: {err}'.format(e=enc,err=err)) 
      else: 
       if msg: 
        print('Decoding with {enc}:'.format(enc=enc)) 
        print(msg) 

if __name__=='__main__': 
    main() 

guess_encoding.py를 실행 한 후의 repr를 입력 str 목적 :

% guess_encoding.py 
\xe3\xc7\x9f 

은 모든 가능한 파이썬 인코딩에 대해 연관된 유니 객체 뱉어.

Decoding with cp1256: 
ماں 
+1

일을 좋은 스크립트 : 당신이 우리에게 있기 때문에

원하는 유니 코드 객체를 사용하면 신속하게 ماں의 출력을 검색하고 성공 코덱을 찾을 수 있습니다

In [128]: print(destination) ماں 

했다. 지금까지는 사용하지 않았지만 시간이 절약 될 수 있습니다. – Voo

+1

완벽. 매우 도움이됩니다. guess_encoding 스크립트와 마찬가지로 나중에 참조 할 수 있도록 사본을 저장했습니다. 슈퍼 유용한. 굉장한 처리 시간도! 감사! – ecx