diff options
| author | Claude Paroz <claude@2xlibre.net> | 2014-02-10 15:55:57 +0100 |
|---|---|---|
| committer | Claude Paroz <claude@2xlibre.net> | 2014-02-10 16:09:04 +0100 |
| commit | fb1e3435a4d7e0265f19a1a9f130c9485fb8dfe9 (patch) | |
| tree | 0a7f52b8189a276cca0d84cf6596b8f9c21d33aa | |
| parent | c3dd38c57427f2d51222b4789137848f5a3194e7 (diff) | |
Fixed #21996 -- Used proper encoding for GeoIP content
Thanks Florent Messa for the report.
| -rw-r--r-- | django/contrib/gis/geoip/prototypes.py | 5 | ||||
| -rw-r--r-- | django/contrib/gis/geoip/tests.py | 2 | ||||
| -rw-r--r-- | docs/releases/1.6.3.txt | 4 |
3 files changed, 8 insertions, 3 deletions
diff --git a/django/contrib/gis/geoip/prototypes.py b/django/contrib/gis/geoip/prototypes.py index 3eae261930..8d78386584 100644 --- a/django/contrib/gis/geoip/prototypes.py +++ b/django/contrib/gis/geoip/prototypes.py @@ -23,6 +23,7 @@ class GeoIPRecord(Structure): ('continent_code', c_char_p), ] geoip_char_fields = [name for name, ctype in GeoIPRecord._fields_ if ctype is c_char_p] +GEOIP_DEFAULT_ENCODING = 'iso-8859-1' geoip_encodings = { 0: 'iso-8859-1', 1: 'utf8', @@ -100,7 +101,7 @@ def check_string(result, func, cargs): free(result) else: s = '' - return s.decode() + return s.decode(GEOIP_DEFAULT_ENCODING) GeoIP_database_info = lgeoip.GeoIP_database_info GeoIP_database_info.restype = geoip_char_p @@ -111,7 +112,7 @@ GeoIP_database_info.errcheck = check_string def string_output(func): def _err_check(result, func, cargs): if result: - return result.decode() + return result.decode(GEOIP_DEFAULT_ENCODING) return result func.restype = c_char_p func.errcheck = _err_check diff --git a/django/contrib/gis/geoip/tests.py b/django/contrib/gis/geoip/tests.py index 8d7bdff291..9631a192ab 100644 --- a/django/contrib/gis/geoip/tests.py +++ b/django/contrib/gis/geoip/tests.py @@ -119,3 +119,5 @@ class GeoIPTest(unittest.TestCase): g = GeoIP() d = g.city("www.osnabrueck.de") self.assertEqual('Osnabrück', d['city']) + d = g.country('200.7.49.81') + self.assertEqual('Curaçao', d['country_name']) diff --git a/docs/releases/1.6.3.txt b/docs/releases/1.6.3.txt index e3fccafd5d..45a1ad0c19 100644 --- a/docs/releases/1.6.3.txt +++ b/docs/releases/1.6.3.txt @@ -7,4 +7,6 @@ Django 1.6.3 release notes This is Django 1.6.3, a bugfix release for Django 1.6. Django 1.6.3 fixes several bugs in 1.6.2: -* ... +* Content retrieved from the GeoIP library is now properly decoded from its + default ``iso-8859-1`` encoding + (`#21996 <http://code.djangoproject.com/ticket/21996>`_). |
