2009-12-02 6 views
0

나는 source.sql 읽기 (SQL 스크립트) 파일파이썬 인코딩 문제?

INSERT INTO `Tbl_abc` VALUES (1111, 2222, 'CLEMENT', 'taya', 'MME', 'Gérant', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 4688, 0, NULL, NULL, 'MAILLOT 01/02/09', 'MAILLOT 01/04/09', NULL, NULL); 

그리고 예를 들어 인코딩 문제를 충족

내 목록 형식의

의 의 으로 dest.sql에 쓸 :

Gérant= G\xc3\xa9rant 

무엇 내가 노력하고

def DataMigration(dest, source, tbl_name, return_data=True): 
    '''  
    ''' 
    data = [] 
    for ln in codecs.open(source, 'r', "utf-8").xreadlines(): 
     replace1 = ln.replace("INSERT INTO `"+tbl_name+"` VALUES (", "") 
     replace2 = replace1.replace(");", "") 
     list_replace = replace2.split(',')   
     s = list_replace 
     data.append(list_replace) 

    if return_data == True: 
     ouputdata = [d for d in data if d[1] == ' 0' and d[6]==' 0'] 
     return ouputdata 
    if return_data == False: 
     return data 

내가 인쇄 DataMigration 인쇄 ('dest.sql', '.source.sql을', 'Tbl_abc'거짓)

OUTPUT

 [['1111', ' 2222', " 'CLEMENT'", " 'taya'", " 'MME'", " 'G\xc3\xa9rant'", ' NULL', ' NULL', ' NULL', ' NULL', ' NULL', ' NULL', ' NULL', ' 4688', ' 0', ' NULL', ' NULL', " 'MAILLOT 01/04/09'", " 'MAILLOT 01/04/09'", ' NULL', ' NULL']] 


But My Ouput file still has the problem.Any Could help me ? 
+0

그냥 생각 : 테이블 정의를 확인 했습니까? – jensgram

+0

내 queston을 업데이트했습니다. 의견을 주셔서 감사합니다. – kn3l

+0

예 원인 : 프랑스어 사용 – kn3l

답변

1

, .encode("utf-8")을 사용하십시오.

파일을 열

fileObj = codecs.open("someFile", "r", "utf-8") 

open("newfile","w").write(data.encode("utf-8")) 
+0

질문이 업데이트되었습니다. 감사합니다. – kn3l

+0

.sql 파일에서'G \ xc3 \ xa9rant' 대신'Gérant'를 원한다고 가정해도 될까요? – YOU

+0

예. 그렇게 될 것입니다. – kn3l

0
파일의 .SQL의

안녕 체크 인코딩 어쩌면 그것을 데이터에 뭔가를 ... 당신이 그것을

data=fileOjb.read() 

을 읽고 말할 수 utf-8이 아닙니다!

0

파이썬에서 작업 데이터를 유니 코드로 저장하고 (읽기에는 디코드 사용) 항상 인코딩을 사용하여 작성하십시오.

예를 들어 올바른 출력 인코딩을 알기 위해서는 데이터베이스의 인코딩을 알아야합니다.

+0

예, 프랑스어 사용. – kn3l