2016-08-17 3 views
-4

파일 내보내기가 제대로 작동하지만 인코딩 데이터에 문제가 있습니다. 어디서 실수 했나요?CSV에 장고 인코딩 문제가 발생했습니다.

내 코드는 함수 .encode 방법은 바이트 문자열을 만들기 위해 유니 코드 문자열에 적용됩니다

for user in users: 
    result = user[0].encode('utf-8') 
    for x in filter(lambda q: q is not None, user): 
     result += ', ' 
     if type(x) in (str, unicode): 
      result += x.encode('utf-8') 
     else: 
      result += str(x) 
     print type(result), result 
    writer.writerow(result) 

return response 
+1

에 그것을 사용하는 방법에 대해 배울 수있는 확실하지 않은 경우? 오류 메시지가 나타 납니까? – user2393256

+0

"문제가 있습니다"를 정의하십시오. 오류/추적을 받았습니까? 보여. CSV는 Python 2 라이브러리에서 유니 코드를 잘 처리하지 못하는 것으로 유명 해져서 많은 사람들이'unicodecsv '를 사용합니다. 파이썬 2 또는 3을 사용하고 있습니까? .... 여기에 도움이되는 정보가 충분하지 않습니다. – Dan

+0

아니요, 내 보낸 파일에 문제가 있습니다. 나는 이제 파이썬 2.7 을 사용하고, 파일의 데이터가 Имя \t Фамилия \t Комментарий \t Дата처럼 보이는이 \t \t \t \t \t \t – tonyjasta

답변

0

이다; CSV 데이터가 utf-8이 아니고 대신에 라틴 -1로 말하면, "트랜스 코딩"이 필요합니다. 다음과 같이 입력하십시오 :

line.decode('latin-1').encode('utf-8') 

CSV 인코딩을 알고 있다면 입력 데이터 인코딩이 무엇이든 latin-1을 바꾸십시오.

또한

, 당신은 CSV 파일의 인코딩 후 당신이 chardet 사용을 고려 할 수 있습니다 당신은 정확히 문제가 무엇 readthedocs

+0

내가 을 사용 을 контракта'writer.writerow (λ q : q는 None, user가 아님)]) 그러나이 방법은 모든 값에 적용되는 것은 아닙니다 ([x.encode ('utf-8' – tonyjasta

관련 문제