2016-04-15 2 views
1

Недавно я переключил некоторое слово (строку) на неанглийский язык. И теперь я получаю эту ошибку в консоли. Я использую python, django. и это происходит из ajax. Я верю в файл python, мне просто нужно добавить «# - - код: utf-8 - - » наверху. Я сделал то же самое, где мой аякс, но он ничего не делает. Здесь, S полной ошибкиUnicodeEncodeError at/notifications/ajax/'ascii' codec не может кодировать символ: порядковый номер не в диапазоне (128)

UnicodeEncodeError at /notifications/ajax/ 
'ascii' codec can't encode character u'\ubbbb' in position 98: ordinal not in range(128) 
Traceback: 
File "/home/env/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response 
    132.      response = wrapped_callback(request, *callback_args, **callback_kwargs) 
File "/home/env/local/lib/python2.7/site-packages/django/contrib/auth/decorators.py" in _wrapped_view 
    22.     return view_func(request, *args, **kwargs) 
File "/home/notifications/views.py" in get_notifications_ajax 
    47.   notes.append(str(note.get_link)) 

Exception Type: UnicodeEncodeError at /notifications/ajax/ 
Exception Value: 'ascii' codec can't encode character u'\ubbbb' in position 98: ordinal not in range(128) 

Здесь, S функции для AJAX

@login_required 
def get_notifications_ajax(request): 
    if request.is_ajax() and request.method == "POST": 
     notifications = Notification.objects.all_for_user(MyProfile.objects.get(user=request.user)).recent() 
     count = notifications.count() 
     notes = [] 
     for note in notifications: 
      notes.append(str(note.get_link)) 
     data = { 
      "notifications": notes, 
      "count": count, 
     } 
     print data 
     json_data = json.dumps(data) 
     print json_data 
     return HttpResponse(json_data, content_type='application/json') 
    else: 
     raise Http404 

ошибки встречающаяся здесь;

notes.append(str(note.get_link)) 

Вот мой Аякса

<script> 
    $(document).ready(function(){ 
     $(".notification-toggle").click(function(e){ 
     e.preventDefault(); 
     $.ajax({ 
      type: "POST", 
      url: "{% url 'get_notifications_ajax' %}", 
      data: { 
      csrfmiddlewaretoken: "{{ csrf_token }}", 
      }, 
     success: function(data){ 
      $("#notification_dropdown").html(' <li role="presentation" class="dropdown-header">view</li>'); 
      var count = data.count 
      console.log(count) 
      if (count == 0) { 
       var url = '{% url "notifications_all" %}' 
       $("#notification_dropdown").append("<li><a href='" + url+ "'>view all</a></li>") 
      } else { 
       $(data.notifications).each(function(){ 
       var link = this; 
       $("#notification_dropdown").append("<li>" + link + "</li>") 
       }) 
      } 
      console.log(data.notifications); 
      }, 
      error: function(rs, e) { 
      console.log(rs); 
      console.log(e); 
      } 
     }) 
     }) 
    }) 
    </script> 

Что я включил это "глагол" на этом одном: notify.send (MyProfile.objects.get (пользователь = request.user), действие = new_comment , целевых = parent_comment, получатель = parent_comment.user, affected_users = affected_users, глагол = 'ответил')

Я перевел «ответил» на корейский, и я получил ошибку

ответ

2

Использование str на корейском символе будет неудачным в python 2 - для этого вы должны использовать .encode(). Поэтому изменение str(note.get_link) до note.get_link.encode('utf-8') должно заставить все работать.

Check out the unicode how to in the docs

>>> x = u'\ubbbb' 
>>> x 
u'\ubbbb' 
>>> type(x) 
<type 'unicode'> 
>>> str(x) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
UnicodeEncodeError: 'ascii' codec can't encode character u'\ubbbb' in position 0: ordinal not in range(128) 
>>> x.encode('utf-8') 
'\xeb\xae\xbb' 
+0

ах-ха спасибо я постараюсь это –

+0

она должна быть (ул note.get_link.encode ('UTF-8')) не так ли? –

+0

спасибо, что он отлично работает сейчас –

Смежные вопросы

 Смежные вопросы