#23265: Django don't start on French Windows with Python 2.7 (but only in 
February,
August and December!)
-------------------------------------+-------------------------------------
     Reporter:  SpaceFox             |                    Owner:  nobody
         Type:  Uncategorized        |                   Status:  new
    Component:  Core (Management     |                  Version:  1.6
  commands)                          |               Resolution:
     Severity:  Normal               |             Triage Stage:
     Keywords:                       |  Unreviewed
    Has patch:  0                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------
Changes (by SpaceFox):

 * needs_better_patch:   => 0
 * needs_docs:   => 0
 * needs_tests:   => 0


Comment:

 Replying to [ticket:23265 SpaceFox]:
 > On Windows / Python 2.7, if Django is set to use the French locale
 ("fra"), an UTF8 encoding error prevents it to start with this stack
 trace:
 >
 >
 > {{{
 > Validating models...
 >
 > 0 errors found
 > Unhandled exception in thread started by <function wrapper at
 0x0000000003F33B38>
 > Traceback (most recent call last):
 >   File "C:\Users\SpaceFox\.virtualenvs\zdsenv\lib\site-
 packages\django\utils\autoreload.py", line 93, in wrapper
 >     fn(*args, **kwargs)
 >   File "C:\Users\SpaceFox\.virtualenvs\zdsenv\lib\site-
 packages\django\core\management\commands\runserver.py", line 104,
 >  in inner_run
 >     now = now.decode('utf-8')
 >   File "C:\Users\SpaceFox\.virtualenvs\zdsenv\lib\encodings\utf_8.py",
 line 16, in decode
 >     return codecs.utf_8_decode(input, errors, True)
 > UnicodeDecodeError: 'utf8' codec can't decode byte 0xfb in position 2:
 invalid start byte
 > }}}
 >
 > How to reproduce this:
 >
 > - Windows (tested on Windows 8.1 x64), all updates OK
 > - Python 2.7 (Python 2.7.8 (default, Jun 30 2014, 16:08:48) [MSC v.1500
 64 bit (AMD64)] on win32)
 > - Django 1.6.5
 > - In settings.py, set locale to "fra":
 {{{locale.setlocale(locale.LC_TIME, 'fra')}}}
 > - Try to launch Django with {{{python manage.py runserver}}}. Kabooom!
 >
 > The problem comes for the django/core/management/commands/runserver.py
 line 102 to 104 :
 >
 > {{{
 >         now = datetime.now().strftime('%B %d, %Y - %X')
 >         if six.PY2:
 >             now = now.decode('utf-8')
 > }}}
 >
 > These 3 lines suppose the strftime method returns an UTF-8 string...
 this is false when Django runs on Windows with Python 2.7.
 >
 > In French language, 3 month names have non-ASCII characters: "février",
 "août" and "décembre" (February, August and December).
 >
 > With described parameters, {{{now}}} is set as "ao¹t 09, 2014 -
 00:56:41". The crap that replaces the "û" character in "août" contains the
 0xfb character, which is illegal in UTF-8. This create the crash.
 >
 > The problem is the same in February and December due to the 0xe9 byte in
 {{{now}}}, caused by the "é" character.
 >
 > With other non-ASCII characters, this may "work" as long as there is no
 illegal byte in the given string: the output of this function will be
 broken (not what is expected) but there will be no exception thrown.
 >
 > I don't know how to correct this, therefore I can't provide any patch.

-- 
Ticket URL: <https://code.djangoproject.com/ticket/23265#comment:1>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/066.9f066f42b76780899c4729f883b44161%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to