2016-10-10 2 views
0

저는 아직 초보자입니다.Django 'ascii'코덱은 u ' uff1f'문자를 인코딩 할 수 없습니다.

데이터베이스에 저장할 때이 오류가 발생합니다.

'아스키'코덱이 위치 (14)에서 유 'uff1f을 \'문자를 인코딩 할 수 없습니다하지만 시도하지만 순서가 범위 (128)

내가 여기 비슷한 질문을 본 되지 않고 그것은 여전히 ​​괜찮지 않다.

UnicodeEncodeError: 'ascii' codec can't encode character u'\xef' in position 0: ordinal not in range(128)

나는 그것을이 데이터 [ '영어']에서 일어날 생각합니다.

views.py 또는 시리얼 라이저를 변경해야합니까?

내보기는

class DialogueView(APIView): 
    permission_classes = (IsAuthenticated,) 

    def post(self, request): 

     data = request.data 
     serializer = DialogueSerializer(data=request.data) 
     if not serializer.is_valid(): 
      return Response(serializer.errors, status= 
       status.HTTP_400_BAD_REQUEST) 
     else: 
      owner = request.user 
      t = Dialogue(owner=owner, english=data['english']) 
      t.save() 
      # request.data['id'] = t.pk # return id 
      return Response(status=status.HTTP_201_CREATED) 

내 시리얼 라이저는 그것은 DB 문자열 필드와 유니 코드 값을 허용하지 않습니다 수 있습니다

class DialogueSerializer(serializers.ModelSerializer): 

    sound_url = serializers.SerializerMethodField() 

    class Meta: 
     model = Dialogue 
     fields = ('id','english','myanmar', 'sound_url') 

    def get_sound_url(self, dialogue): 
     if not dialogue.sound: 
      return None 

     request = self.context.get('request') 
     sound_url = dialogue.sound.url 
     return request.build_absolute_uri(sound_url) 
+0

어떤 버전의 파이썬입니까? –

+0

파이썬 2.7을 사용하고 있습니다. –

+0

시리얼 라이저와 뷰 파일의 첫 줄에 '#coding : utf-8'라는 마법의 코멘트가 있습니까? –

답변

0

입니다.

는이 문제를 해결 두 가지 방법을 시도하려면

  1. 변경 DB의 설정을 유니 코드 인코딩을 사용으로. 예 : mysql의 경우 This post.

  2. DB에 저장하기 전에 유니 코드 값을 인코딩하십시오. 다음과 같이 값을 변환 해보십시오. val = data['English'] 및 val을 모델에 저장하십시오.

+0

감사합니다. 나는 대략 1을 읽을 것이다. 당신은 2에 대해 더 자세히 설명해 주실 수 있습니까? 인코딩 할 링크를 읽었으므로 괜찮지 않습니다. 뷰 또는 직렬화 기에서 발생하는지 여부도 확실하지 않습니다. –

+0

[이 질문] (http://stackoverflow.com/questions/4269605/django-override-save-for-model)에 설명 된대로 모델의 '저장'기능에서 인코딩을 변환 할 수 있습니다. – SolessChong

관련 문제