3611: Cannot add polish national characters in comment

krzyszt********@gmai***** (Google Code) (Is this you? Claim this profile.)
Oct. 9, 2014
What version are you running?
2.0.8

What steps will reproduce the problem?
1. Open reviewboard
2. Go to "View diff" on some review
3. Add comment with national characters, like "łóćąężźćńę"

What is the expected output? What do you see instead?
Expected to add comment.
I see message: Cannot save comment: HTTP 500 INTERNAL SERVER ERROR

What operating system are you using? What browser?
Server is on Linux. I use Chrome on Windows

Please provide any additional information below.
Log:
2014-10-09 07:35:34,003 - ERROR -  - Exception thrown for user xxxxxx at http://xxxxxxxx/api/review-requests/4584/reviews/14455/diff-comments/

Incorrect string value: '\xC5\x82\xC3\xB3\xC4\x87...' for column 'text' at row 1
Traceback (most recent call last):
  File "/usr/lib/python2.6/site-packages/Django-1.6.7-py2.6.egg/django/core/handlers/base.py", line 112, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/usr/lib/python2.6/site-packages/Django-1.6.7-py2.6.egg/django/views/decorators/cache.py", line 52, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "/usr/lib/python2.6/site-packages/Django-1.6.7-py2.6.egg/django/views/decorators/vary.py", line 19, in inner_func
    response = func(*args, **kwargs)
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.11-py2.6.egg/djblets/webapi/resources.py", line 495, in __call__
    request, method, view, api_format=api_format, *args, **kwargs)
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.11-py2.6.egg/djblets/webapi/resources.py", line 566, in call_method_view
    return view(request, *args, **kwargs)
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.11-py2.6.egg/djblets/webapi/resources.py", line 748, in post
    return self.create(*args, **kwargs)
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.11-py2.6.egg/djblets/webapi/decorators.py", line 117, in _call
    return view_func(*args, **kwargs)
  File "/usr/lib/python2.6/site-packages/ReviewBoard-2.0.8-py2.6.egg/reviewboard/webapi/decorators.py", line 110, in _check
    return view_func(*args, **kwargs)
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.11-py2.6.egg/djblets/webapi/decorators.py", line 117, in _call
    return view_func(*args, **kwargs)
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.11-py2.6.egg/djblets/webapi/decorators.py", line 138, in _checklogin
    return view_func(*args, **kwargs)
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.11-py2.6.egg/djblets/webapi/decorators.py", line 117, in _call
    return view_func(*args, **kwargs)
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.11-py2.6.egg/djblets/webapi/decorators.py", line 117, in _call
    return view_func(*args, **kwargs)
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.11-py2.6.egg/djblets/webapi/decorators.py", line 287, in _validate
    return view_func(*args, **new_kwargs)
  File "/usr/lib/python2.6/site-packages/ReviewBoard-2.0.8-py2.6.egg/reviewboard/webapi/resources/review_diff_comment.py", line 127, in create
    **kwargs)
  File "/usr/lib/python2.6/site-packages/ReviewBoard-2.0.8-py2.6.egg/reviewboard/webapi/resources/base_comment.py", line 157, in create_comment
    new_comment.save()
  File "/usr/lib/python2.6/site-packages/ReviewBoard-2.0.8-py2.6.egg/reviewboard/reviews/models/base_comment.py", line 133, in save
    super(BaseComment, self).save()
  File "/usr/lib/python2.6/site-packages/Django-1.6.7-py2.6.egg/django/db/models/base.py", line 545, in save
    force_update=force_update, update_fields=update_fields)
  File "/usr/lib/python2.6/site-packages/Django-1.6.7-py2.6.egg/django/db/models/base.py", line 573, in save_base
    updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)
  File "/usr/lib/python2.6/site-packages/Django-1.6.7-py2.6.egg/django/db/models/base.py", line 654, in _save_table
    result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
  File "/usr/lib/python2.6/site-packages/Django-1.6.7-py2.6.egg/django/db/models/base.py", line 687, in _do_insert
    using=using, raw=raw)
  File "/usr/lib/python2.6/site-packages/Django-1.6.7-py2.6.egg/django/db/models/manager.py", line 232, in _insert
    return insert_query(self.model, objs, fields, **kwargs)
  File "/usr/lib/python2.6/site-packages/Django-1.6.7-py2.6.egg/django/db/models/query.py", line 1514, in insert_query
    return query.get_compiler(using=using).execute_sql(return_id)
  File "/usr/lib/python2.6/site-packages/Django-1.6.7-py2.6.egg/django/db/models/sql/compiler.py", line 903, in execute_sql
    cursor.execute(sql, params)
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.11-py2.6.egg/djblets/log/middleware.py", line 52, in execute
    return self.cursor.execute(sql, params)
  File "/usr/lib/python2.6/site-packages/Django-1.6.7-py2.6.egg/django/db/backends/mysql/base.py", line 124, in execute
    return self.cursor.execute(query, args)
  File "/usr/lib/python2.6/site-packages/MySQL_python-1.2.3-py2.6-linux-x86_64.egg/MySQLdb/cursors.py", line 176, in execute
    if not self._defer_warnings: self._warning_check()
  File "/usr/lib/python2.6/site-packages/MySQL_python-1.2.3-py2.6-linux-x86_64.egg/MySQLdb/cursors.py", line 92, in _warning_check
    warn(w[-1], self.Warning, 3)
Warning: Incorrect string value: '\xC5\x82\xC3\xB3\xC4\x87...' for column 'text' at row 1
chipx86
#1 chipx86
You need to make sure your database and all tables are set for UTF-8. It's probably set for latin1. You'll need to google for instructions on how to do this.
  • +SetupIssue
#2 krzyszt********@gmai***** (Google Code) (Is this you? Claim this profile.)
That's right. I'll check with UTF8 and get back to you.
#3 krzyszt********@gmai***** (Google Code) (Is this you? Claim this profile.)
It works. Thanks!