On Wed, 08 Nov 2006 21:59:38 +0100, Tim Daneliuk <[EMAIL PROTECTED]>  
wrote:

> Sefyroth wrote:
>> Thanks,
>>  but I get this error when I try this.
>>  UnicodeEncodeError: 'ascii' codec can't encode character u'\xe8' in
>> position 12: ordinal not in range(128)
>>   I had encountered it with the askdirectory method as well. Is there an
>> easy way to bypass this?
>>  Thanks again
>
> I believe you are running into a directory or file name that has
> non-ascii characters in it.  Python as shipped is set up to
> deal with ascii as its native encoding format.  You can change
> this by editing the "site.py" file - look in the Lib directory
> in your python installation.  Look for this code:
>
> -------------------------------
> def setencoding():
>      """Set the string encoding used by the Unicode implementation.  The
>      default is 'ascii', but if you're willing to experiment, you can
>      change this."""
>      encoding = "ascii" # Default value set by _PyUnicode_Init()
>      if 0:
>          # Enable to support locale aware default string encodings.
>          import locale
>          loc = locale.getdefaultlocale()
>          if loc[1]:
>              encoding = loc[1]
> -------------------------------
>
>
>
> Change the "if 0:" to "if 1:" and see if that doesn't fix the problem.

This is usually a bad idea, especially if the script must be distributed  
to other users in any way: since they probably never did this "trick", the  
code will fail when they use it.

I know it's a pain, but you *have* to deal with encodings yourself, and  
not let the system guess what you might want.

In the OP's case, the problem just lies in the 'print' statement, that  
tries to encode the file name in ASCII before printing it. So just doing:
print repr(file.name)
would solve the problem.

HTH
-- 
python -c "print ''.join([chr(154 - ord(c)) for c in  
'U(17zX(%,5.zmz5(17l8(%,5.Z*(93-965$l7+-'])"
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to