UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb6 in position 0: invalid start byte

Ferrous Cranus nikos at superhost.gr
Fri Jul 12 13:56:07 CEST 2013

Στις 12/7/2013 2:47 μμ, ο/η Wayne Werner έγραψε:
> On Thu, 4 Jul 2013, Νίκος Γκρ33κ wrote:
>> Στις 4/7/2013 6:10 μμ, ο/η MRAB έγραψε:
>>> What do you mean "I don't know how to catch the exception with
>>> OSError"? You've tried "except socket.gaierror" and "except
>>> socket.herror", well just write "except OSError" instead!
>> try:
>>     host = socket.gethostbyaddr( os.environ['REMOTE_ADDR'] )[0]
>> except OSError:
>>     host = "UnResolved"
>> produces also an internal server error.
>> Are you sure is just except OSError ?
> Have you ensured that 'REMOTE_ADDR' is actually a key in os.environ? I
> highly recommend using the logging module to help diagnose what the
> actual exception is.
> HTH,
> -W

Yes it is a key, but the problem as i suspected was cloudflare.
i had to use os.environ['HTTP_CF_CONNECTING_IP'] that cloudflare passes 
as variable i the cgi enviroment in order to retrieve the visitor's ip.

	gi = pygeoip.GeoIP('/usr/local/share/GeoLiteCity.dat')
	city = gi.time_zone_by_addr( os.environ['HTTP_CF_CONNECTING_IP'] )
	host = socket.gethostbyaddr( os.environ['HTTP_CF_CONNECTING_IP'] )[0]
except Exception as e:
	host = repr(e)

Sometimes though iam still receiving the usual
UnicodeDecodeError('utf-8', b'\xc1\xf0\xef\xf4\xf5

but only for a few ip addresses, in moste cases it works.
What is now proved was at first only imagined!

More information about the Python-list mailing list