On 30/09/2010 18:47, jean polo wrote:
> ok, thanks to everybody for the help but unfortunately nothing works
> for my issue.
> (except Karen one that solves it on one of my local machines but not
> the other which has the same linux system... weird..).
> 
> I guess I'll ask my client to rename their files without any special
> char....
> not the best solution but a good habit anyway =)
> 
> cheers,
> _y
> 
> 
> On Sep 30, 2:20 pm, Karen Tracey <kmtra...@gmail.com> wrote:
>> On Wed, Sep 29, 2010 at 12:59 PM, jean polo 
>> <josiano....@googlemail.com>wrote:
>>
>>
>>
>>> Hi.
>>> I get an 'UnicodeEncodeError' if I upload a file (ImageField) with non-
>>> ascii chars in my application (django-1.2.1).
>>
>>> I added:
>>
>>> export LANG='en_US.UTF-8'
>>> export LC_ALL='en_US.UTF-8'
>>
>>> in my /etc/apache2/envvars as stated here:
>>
>>> http://docs.djangoproject.com/en/dev/howto/deployment/modpython/#if-y...
>>
>>> but I still have the same error (after restarting apache).
>>> Any hint much appreciated.
>>
>> Some servers do not have the necessary language files to allow successfully
>> setting the locale to one that supports utf-8 encoding. See the very last
>> sentence here:http://code.djangoproject.com/wiki/ExpectedTestFailures
>>
>> You should be able to experiment with setting these variables in a shell
>> session and passing unicode strings containing non-ASCII characters to file
>> system routines like stat. If it works in a shell, then likely you've got
>> the necessary language support installed, and the problem then is that the
>> Apache configuration for some reason is not taking effect. If you cannot get
>> it to work in a shell either, then likely you are missing a language pack
>> that would allow successfully setting locale in this way.
>>
>> Karen
>> --http://tracey.org/kmt/
> 

I had a similar problem in a python script. Not necessary to rename files :)
The problem is that when you print a debug statement or write to a file, you
need to specify the correct encoding.
I'll add a snippet of the logger class that i'm using so you'll have an idea.
Also, play with the shell and see if you can reproduce and solve the problem 
there.

    try:
        # If the message is unicode, convert to bytecode
        screen_message = message
        file_message = message

        if ( isunicode(message) ):
            screen_message = message.encode("cp850")
            file_message = (message + '\n').encode("utf-8")

        # Print to screen
        if ( to_screen == 1 ): print screen_message

        # Write to file
        f = open(logfile, 'a')
        f.write(file_message)
        f.close()
    except Exception, e:
        print "Logmessage: exception %s" % str(e)

I seem to remember that on my windows, the code page in the command screen 
(cp850)
is different from the code page used in a file (latin1).

Anyway, as you can see, before i print a message to the cmd screen, i encode it.
Same happens when i save the message in the logfile. I encode it to a different
code page however.
You'll have to do the same with other strings that get printed.

This works for me

Regards,
Benedict

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to