Вставка языковых символов в Django - PullRequest
0 голосов
/ 12 июля 2010

Я перехожу по ссылке http://code.google.com/p/django-multilingual-model/ В основном я пытаюсь вставить символы хинди в mysql db

Я создал файлы в тестовой директории, как в приведенной выше ссылке и использую версию django1.1, версия dpython - 2.4.3

Я получаю сообщение об ошибке, как показано ниже.

  from testlanguages import Language,BookTranslation,Book
  >>> lang_pl = Language(code="pl", name="Polish")
  >>> lang_pl.save()
  >>> book_pl.language = lang_pl
  >>> book_pl.save()
  >>> lang_hi = Language(code="hi", name="Hindi")
  >>> lang_hi.save()
  >>> book_hi = BookTranslation()
  >>> book_hi.title = "का सफल प्रक्षेपण किया है. इस राकेट ने पाँच"  Sum characters as in bbc.co.uk/hindi
  >>> book_hi.description = "का सफल प्रक्षेपण किया है. इस राकेट ने पाँच" Sum characters as in bbc.co.uk/hindi
  >>> book_hi.model = book
  >>> book_hi.language = lang_hi
  >>> book_hi.save()
  Traceback (most recent call last):
    File "<console>", line 1, in ?
    File "/opt/project/django/django/db/models/base.py", line 410, in save
    self.save_base(force_insert=force_insert, force_update=force_update)
    File "/opt/project/django/django/db/models/base.py", line 495, in save_base
    result = manager._insert(values, return_id=update_pk)
    File "/opt/project/django/django/db/models/manager.py", line 177, in _insert
    return insert_query(self.model, values, **kwargs)
    File "/opt/project/django/django/db/models/query.py", line 1087, in insert_query
    return query.execute_sql(return_id)
    File "/opt/project/django/django/db/models/sql/subqueries.py", line 320, in execute_sql
    cursor = super(InsertQuery, self).execute_sql(None)
    File "/opt/project/django/django/db/models/sql/query.py", line 2369, in execute_sql
    cursor.execute(sql, params) 
    File "/opt/project/django/django/db/backends/util.py", line 19, in execute
    return self.cursor.execute(sql, params)
    File "/opt/project/django/django/db/backends/mysql/base.py", line 84, in execute
    return self.cursor.execute(query, args)
    File "/usr/lib/python2.4/site-packages/MySQLdb/cursors.py", line 165, in execute
    self._warning_check()
    File "/usr/lib/python2.4/site-packages/MySQLdb/cursors.py", line 80, in _warning_check
    warn(w[-1], self.Warning, 3)
    File "/usr/lib/python2.4/warnings.py", line 61, in warn
    warn_explicit(message, category, filename, lineno, module, registry)
    File "/usr/lib/python2.4/warnings.py", line 96, in warn_explicit
        raise message
        Warning: Incorrect string value: '\xE0\xA4\x95\xE0\xA4\xBE...' for column 'title' at row 1

Как решить эту проблему.

Есть ли простой способ вставитьспециальные символы в БД

Ответы [ 3 ]

2 голосов
/ 12 июля 2010

Прекратите использовать строки байтов. Начните использовать unicode.

book_hi.title = u"का सफल प्रक्षेपण किया है. इस राकेट ने पाँच"
0 голосов
/ 14 апреля 2015
conn = MySQLdb.connect(  host = "localhost",
            user = "root",
            passwd = "",
            db = "test");

conn.set_character_set('utf8')

этот код решит вашу проблему

Примечание *. conn.set_character_set('utf8') является заметной частью

0 голосов
/ 12 июля 2010

Скорее всего, это проблема MySQL, которая не всегда поддерживает символы Unicode по умолчанию.

Вам, вероятно, следует объявить значения DEFAULT CHARSET до utf8 и DEFAULT COLLATION до utf8_general_ci на вашембазы данных (используйте ALTER DATABASE или измените операторы CREATE DATABASE, как объяснено здесь ).

...