From 460ec09d2ed26f5862aabeaa480bcb713d5f331f Mon Sep 17 00:00:00 2001 From: Claude Paroz Date: Mon, 23 Jun 2014 09:28:42 +0200 Subject: [PATCH] Fixed #22880 -- Added FAQ entry about UnicodeDecodeError MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Thanks Víðir Valberg Guðmundsson for the report and Tim Graham for the review. --- docs/faq/troubleshooting.txt | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/docs/faq/troubleshooting.txt b/docs/faq/troubleshooting.txt index da286cf4e2..d851a0546a 100644 --- a/docs/faq/troubleshooting.txt +++ b/docs/faq/troubleshooting.txt @@ -49,3 +49,38 @@ use the full path to the file, like so: ``python C:\pythonXY\Scripts\django-admin.py``. .. _virtualenv: http://www.virtualenv.org/ + +Miscellaneous +============= + +I'm getting a ``UnicodeDecodeError``. What am I doing wrong? +------------------------------------------------------------ + +This class of errors happen when a bytestring containing non-ASCII sequences is +transformed into a Unicode string and the specified encoding is incorrect. The +output generally looks like this:: + + UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position ?: + ordinal not in range(128) + +The resolution mostly depends on the context, however here are two common +pitfalls producing this error: + +* Your system locale may be a default ASCII locale, like the "C" locale on + UNIX-like systems (can be checked by the ``locale`` command). If it's the + case, please refer to your system documentation to learn how you can change + this to a UTF-8 locale. + +* You created raw bytestrings, which is easy to do on Python 2:: + + my_string = 'café' + + Either use the ``u''`` prefix or even better, add the + ``from __future__ import unicode_literals`` line at the top of your file + so that your code will be compatible with Python 3.2 which doesn't support + the ``u''`` prefix. + +Related resources: + +* :doc:`Unicode in Django ` +* https://wiki.python.org/moin/UnicodeDecodeError