id,summary,reporter,owner,description,type,status,component,version,severity,resolution,keywords,cc,stage,has_patch,needs_docs,needs_tests,needs_better_patch,easy,ui_ux 3937,UnicodeEncodeError exception when using the filter method with LIKE operator and unicode strings,brunogola@…,Adrian Holovaty,"When i try to use objects.filter this way: Participante.objects.filter(nome__contains=u""á"") it returns this exception: {{{ Traceback (most recent call last): File """", line 1, in File ""/usr/lib/python2.5/site-packages/django/db/models/query.py"", line 102, in __repr__ return repr(self._get_data()) File ""/usr/lib/python2.5/site-packages/django/db/models/query.py"", line 470, in _get_data self._result_cache = list(self.iterator()) File ""/usr/lib/python2.5/site-packages/django/db/models/query.py"", line 174, in iterator select, sql, params = self._get_sql_clause() File ""/usr/lib/python2.5/site-packages/django/db/models/query.py"", line 484, in _get_sql_clause joins2, where2, params2 = self._filters.get_sql(opts) File ""/usr/lib/python2.5/site-packages/django/db/models/query.py"", line 648, in get_sql joins2, where2, params2 = val.get_sql(opts) File ""/usr/lib/python2.5/site-packages/django/db/models/query.py"", line 699, in get_sql return parse_lookup(self.kwargs.items(), opts) File ""/usr/lib/python2.5/site-packages/django/db/models/query.py"", line 831, in parse_lookup joins2, where2, params2 = lookup_inner(path, lookup_type, value, opts, opts.db_table, None) File ""/usr/lib/python2.5/site-packages/django/db/models/query.py"", line 1009, in lookup_inner params.extend(field.get_db_prep_lookup(lookup_type, value)) File ""/usr/lib/python2.5/site-packages/django/db/models/fields/__init__.py"", line 173, in get_db_prep_lookup return [""%%%s%%"" % prep_for_like_query(value)] File ""/usr/lib/python2.5/site-packages/django/db/models/fields/__init__.py"", line 25, in prep_for_like_query = lambda x: str(x).replace(""\\"", ""\\\\"").replace(""%"", ""\%"").replace(""_"", ""\_"") UnicodeEncodeError: 'ascii' codec can't encode characters in position 1-2: ordinal not in range(128) }}} I don't know if it is a bug, BUT me and some guys from django-brasil have tried a lot of ways before changing django code, so... Changing str() for unicode() in file ''django/db/models/fields/__init__.py'' line 25, solved the problem. the patch (svn diff): {{{ Index: __init__.py # prepares a value for use in a LIKE query -prep_for_like_query = lambda x: str(x).replace(""\\"", ""\\\\"").replace(""%"", ""\%"").replace(""_"", ""\_"") +prep_for_like_query = lambda x: unicode(x).replace(""\\"", ""\\\\"").replace(""%"", ""\%"").replace(""_"", ""\_"") }}} Sorry for my english... i'm from Brazil :) Thanks, Bruno Gola",,closed,"Database layer (models, ORM)",other branch,,fixed,unicode str unicode-branch,,Accepted,1,0,1,1,0,0